python - Django,使用 ModelForm 将数据添加到外键字段的最佳方法
问题描述
我正在玩 django、ModelForms,并使用外键创建了 PostModel 和 CommentModel。那就是所有帖子都有一个评论框,允许用户发表评论,这是我的观点,效果很好我只是想知道我可以将数据添加到评论字段的最佳方式
def comment(request, id):
try:
post = PostModel.objects.get(pk=id)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form['comment'].value()
post.postcomment_set.create(comment=comment)
return redirect('all_post')
else:
form = CommentForm()
context['form2'] = form
return render(request, 'prac/comment.html', context)
except Exception as e:
return HttpResponse(f'Error {e}')
模板中的表格
<form action="{% url 'comment' post.id %}" method="post">
{% csrf_token %}
<p>{{form2.comment.label}}<br>{{form2.comment}} <input type="submit" value="Comment"></p>
</form>
一切正常我只想知道在我看来处理数据处理的最佳方式
解决方案
尝试使用form.instance
它,它包含新的注释实例,因此您可以在保存之前对其进行修改:
if form.is_valid():
form.instance.post = post
form.save()
return redirect('all_post')
推荐阅读
- php - 如何将我的 xampp locahost api 项目部署到在线虚拟主机服务器
- deep-learning - 给定一个神经网络和一个问题大小 N、2N、3N... 网络的空间复杂度将如何随问题大小扩展?
- python - 如何设置 Django 静态文件?
- typescript - gettext() 在量角器中总是返回空
- c++ - C++ 泛型方法给出“没有匹配的调用函数”错误
- c++ - 我用 Gstreamer MSVC 1.16.1 构建 opencv 3.4,现在 imread 和 VideoCapture 不起作用
- regex - 如何通过删除postgres中的中间部分来获取字符串
- python-3.x - 循环中打印位置导致的差异
- scala - Spark Scala 中的点积
- mysql - 如何在mysql中找到平均差异?