私のアプリケーションでは、User
が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)
....
をカスタムフォームを作成し、更新することでこれを回避する私の方法をハッキングしてきましたが、その後、私はいくつかの方法でForm
クラスの目的に反し自動UI生成およびフォームバリデーションを失います。誰かが、Form
にそれを含めずにuser
フィールドを設定するという慣用的な方法を教えてもらえますか?
この場合、 'user'フィールドをModelFormから除外できますか? –
はい、あなたはそれをレンダリングしたくないのですか?ユーザーはモデルインスタンスに直接格納されます。 –
ありがとう、何らかの理由で私はそれがそれより複雑になると思った... –