我有以下的模型类:从表单自定义外键字段保存数据在Django
class ContactPerson(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
class Appartment(models.Model):
contact_person = models.ForeignKey(ContactPerson)
问题:在模板文件我想用户填写联系人的姓名,所以我改写contact_person场如下:
class AppartmentSellForm(ModelForm):
contact_person = forms.CharField(max_length=30)
class Meta:
model = Appartment
在我看来,功能我做了以下数据来自提交表单保存:
def appartment_submit(request):
if request.method == "POST":
form = AppartmentSellForm(request.POST)
if form.is_valid():
appartment = form.save(commit=False) # ERROR HERE
cp = models.ContactPerson(name=form.cleaned_data['contact_person'])
appartment.contact_person = cp
appartment.save()
form.save();
return HttpResponseRedirect('/sell/')
else:
form = AppartmentSellForm()
return render_to_response('sell_appartment_form.html', {'form' : form})
错误消息:
#ValueError at /sell/sell_appartment/appartment_submit/
Cannot assign "u'blabla'": "Appartment.contact_person" must be a "ContactPerson" instance.**
我使用SQLite和Django的版本1.1.1
问题:如何解决这个问题?
这是Django的一个相当旧的版本,是否有你不使用1.3的原因? –
没有特别的理由:) – Asterisk
在解决所有错误和弃用警告后,更新可能会缓解您的进度,这会更好。更多关于主题(带有尘埃的Django技能),如果你打印cp变量,你会得到你所期望的吗? –