Ich habe die folgenden Modellklassen:
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)
Problem: In der Vorlagendatei möchte ich, dass ein Benutzer den Namen des Ansprechpartners ausfüllt, also überschreibe ich das Feld contact_person wie folgt:
class AppartmentSellForm(ModelForm):
contact_person = forms.CharField(max_length=30)
class Meta:
model = Appartment
In meiner Ansichtsfunktion tue ich das Folgende, um Daten aus einem übermittelten Formular zu speichern:
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})
Fehlermeldung :
#ValueError at /sell/sell_appartment/appartment_submit/
Cannot assign "u'blabla'": "Appartment.contact_person" must be a "ContactPerson" instance.**
Ich verwende SQLite und django Version 1.1.1
Frage: Wie lässt sich dieses Problem lösen?