Eine weitere Django-Formfrage.Weitere Django-Formulare: Fremdschlüssel im versteckten Feld
Meine Form:
class PlanForm(forms.ModelForm):
owner = forms.ModelChoiceField(label="",
queryset=Profile.objects.all(),
widget=forms.HiddenInput())
etc...
class Meta:
model = Plan
Besitzer, in dem Modell ist ein ForeignKey zu einem Profil.
Wenn ich dieses Formular einstelle, setze ich den Wert von "Besitzer" als ein Profil-Objekt.
Aber wenn dies auf dem Formular herauskommt, so scheint es, den Namen des Profils wie folgt enthalten:
<input type="hidden" name="owner" value="phil" id="id_owner" />
Wenn das Formular abgeschickt wird, und wird zurück zu meinem views.py Ich versuche, handhaben es so:
form = PlanForm(request.POST)
...
if form.is_valid():
plan = form.save()
return HttpResponseRedirect('/plans/%s'%plan.id) # Redirect after POST
Doch was ich bekommen, ist eine Typkonvertierungsfehler, da es die Zeichenfolge „phil“, um nicht (der Name des Benutzers, der in den „Besitzer“ Feld gespeichert wurde) in eine Int um es in den ForeignKey zu verwandeln.
Also was ist hier los. Sollte ein ModelForm einen Fremdschlüssel als Nummer darstellen und transparent behandeln? Oder muss ich die ID selbst in das Besitzerfeld des Formulars extrahieren? Und wenn ja, wie und wann ordne ich es zurück, BEVOR ich versuche, das Formular zu validieren?
wie werden Sie den Wert Besitzer Einstellung, wenn Sie das Formular festgelegt. Können wir das sehen? – defrex