gpt4 book ai didi

python - 仅更新 Django 表单中的 ForeignKey 字段

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:19 25 4
gpt4 key购买 nike

我尝试以 Django 形式更新模型的 ForeignKey 字段。我希望用户不要将他的名字作为他所写文章的作者写入输入字段,但他的 id 必须保存在 Article 模型的字段中。在我的 html 表单中,我只显示一个带有隐藏输入的按钮。但是在我的 views.py 中,我写道该表单应该采用 user.id 并将其放在 'article_author' 字段中。

不幸的是,我没有对表格进行更新。我究竟做错了什么?

我的模型:

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)

我的观点.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('/')

我的表格.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>

最佳答案

尝试以下操作之一:

if author_form.is_valid():
article = author_form.save(commit=False)
article.article_author = user
# article.article_author_id = user.id #w ill work as well
article.save()
else:
return redirect('/')

或者以形式实例化:

initial={'article_author_id': user.id}  

关于python - 仅更新 Django 表单中的 ForeignKey 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37001783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com