現在ログインしているユーザーに基づいてメッセージの発信者を設定するメッセージング システムに取り組んでいます。
class Message(models.Model):
originator = models.ForeignKey(User, related_name='+')
destination = models.ForeignKey(User, related_name='+')
subject = models.CharField(max_length=100)
content = models.TextField()
これを表すために ModelForm と CreateView を使用します。
class MessageForm(forms.ModelForm):
class Meta:
model = Message
fields = ('destination', 'subject', 'content')
したがって、このフォームを保存する前にoriginator
、現在ログインしているユーザーに設定する必要があります。ここでモデルのメソッドをオーバーライドするのは適切ではないと思うsave
ので、フォームのsave
メソッドでオーバーライドするつもりでしたが、リクエスト変数にアクセスできません。別の CreateView 投稿では、get_form_kwargs
メソッドをオーバーライドすることをお勧めしました。
class MyFormView(FormView):
def get_form_kwargs(self):
# pass "user" keyword argument with the current user to your form
kwargs = super(MyFormView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
user
ただし、ModelForm はカスタム引数を受け入れないため、実際には kwarg を ModelFormに渡すことができないため、これは機能しません。
originator
ユーザー情報で変数を更新する最良の (最もクリーンで実用的な) 方法は何ですか?