0
ユーザーが投稿/記事を投稿できるフォームを作成しようとしています。ユーザーがrequest.userであるModelForm
私は、このモデルを持っている:
class Post(models.Model):
title = models.CharField(max_length=150)
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
この形式:
class PostForm(forms.ModelForm):
title = forms.CharField(required=True)
content = forms.CharField(widget=forms.Textarea)
class Meta:
model = Post
fields = ['title', 'content']
そして、このビュー:
class PostCreateView(FormView):
form_class = PostForm
template_name = 'template/create_post.html'
success_url = reverse_lazy('index')
def form_valid(self, form):
response = super(PostCreateView, self).form_valid(form)
form.user = self.request.user
form.save()
return response
私は、ユーザーが設定したが、私はまだ取得しています
は、私がここで間違って何をやっている: NOT NULL constraint failed: cyth_post.user_id
ここで完全なトレースバックコールがですか?
お返事ありがとうございます!
を実行する必要があります。なぜ、form.userの代わりにform.instance.userですか? – ShadowXsc
フォームには属性userはありませんが、インスタンスはモデルオブジェクトであり、ユーザ –
ありがとうございます。今、私は分かる。 – ShadowXsc