In meiner App habe ich User
s erstellen Post
Objekte. Jede Post
hat eine User
Django Set ModelForm Feld ohne es in der Form
class Post(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
...
ich einen Post-Anmeldeformular für die Bearbeitung und Einreichung erstellt werden soll, so plane ich Djangos Modelform Funktion zu nutzen.
class PostForm(ModelForm):
class Meta:
model = Post
fields = "__all__"
Allerdings, wenn ich das tue, dann wer auch immer die Form wird anschaut einstellen können, die die Post Autor ist. Ich möchte sicherstellen, dass das resultierende user
Feld ihnen gehört. Aber, wenn ich schließe das user
Feld aus der Modelform,
class PostForm(ModelForm):
class Meta:
model = Post
exclude = 'user'
dann wird der Benutzer nicht auf Formular-Vorlage festgelegt werden. Ich habe meinen Weg, um diese gehackt durch ein benutzerdefiniertes Formular zu machen und die Aktualisierung des Postfeld
def submit_view(request):
....
request.POST = request.POST.copy()
request.POST.update({
'user' : request.user.id
})
form = PostForm(request.POST, request.FILES)
....
aber dann verliere ich automatische UI Generation und Formularvalidierung, die in gewisser Weise den Zweck der Form
Klasse besiegt. Könnte mir jemand auf die idiomatische Art und Weise zeigen, das Feld user
einzustellen, ohne es in die Form
aufzunehmen?
Kann ich in diesem Fall das Feld 'user' aus der ModelForm ausschließen? –
Ja, Sie sollten, wenn Sie nicht möchten, dass es gerendert wird! Der Benutzer wird direkt in der Modellinstanz gespeichert! –
danke, aus irgendeinem Grund dachte ich, es würde komplizierter sein als das ... –