1
django形式のモデルのForeignKeyフィールドを更新しようとしています。私は彼が書いた記事の著者として彼の名前を入力フィールドに書き込まないようにしたいが、彼のid
はArticle
のフィールドに保存しなければならない。私のhtml形式では、隠された入力を持つボタンだけを表示します。しかし、私のviews.pyでは、フォームにはuser.id
があり、'article_author'
フィールドに入力する必要があります。Django形式のForeignKeyフィールドのみを更新します。
残念ながら、私はテーブルを更新していません。私は間違って何をしていますか?
私のモデル:
class Article(models.Model):
article_pub_date = models.DateField(default=None,null=True,verbose_name="Дата публикации")
article_title = models.CharField(max_length=70, verbose_name="Заголовок", null=True)
article_text = models.TextField(verbose_name="Текст", null=True)
article_author = models.ForeignKey(User, verbose_name='Автор', blank=True, null=True)
私のviews.py
def article_detail(request, article_id):
user = request.user
article = get_object_or_404(Article, pk=article_id)
author_form = ArticleForm(request.POST or None, instance=article, initial={'article_author': user.id})
if author_form.is_valid():
author_form.save()
else:
return redirect('/')
私forms.py
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ('article_author',)
widgets = {'article_author': forms.HiddenInput()}
と私のテンプレート:
<form method="POST" action="">
{% csrf_token %}
{{ author_form.as_p }}
<input type="submit" value="BIND" class="btn">
</form>