在我的應用程序中,我有User
s創建Post
對象。每個Post
有User
Django設置ModelForm字段不包括它的形式
class Post(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
...
我想創建用於編輯和提交提交後的形式,所以我打算使用Django的ModelForm功能。
class PostForm(ModelForm):
class Meta:
model = Post
fields = "__all__"
但是,如果我這樣做,那麼查看錶單的人將能夠設置作者是誰。我想確保由此產生的user
字段是他們。但是,如果我排除了的ModelForm的user
場,
class PostForm(ModelForm):
class Meta:
model = Post
exclude = 'user'
那麼用戶將不會在表單提交設置。我砍死我解決這個通過製作自定義窗體和更新後場
def submit_view(request):
....
request.POST = request.POST.copy()
request.POST.update({
'user' : request.user.id
})
form = PostForm(request.POST, request.FILES)
....
但後來我失去了自動UI生成和表單驗證,在某些方面違背了Form
類的目的。難道有人指向我設置user
字段的慣用方式,但不包括在Form
中?
在這種情況下,我可以從ModelForm中排除'user'字段嗎? –
是的,你應該如果你不想它被渲染!用戶直接存儲在模型實例中! –
謝謝,由於某種原因,我認爲它會比這更復雜... –