我正在玩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>
一切正常我只想知道我在视图中处理数据处理的最佳方式
答案 0 :(得分:1)
尝试使用form.instance
代替,它包含新的评论实例,因此您可以在保存前修改它:
if form.is_valid():
form.instance.post = post
form.save()
return redirect('all_post')
答案 1 :(得分:0)
form = CommentForm(request.POST)
if form.is_valid():
variable = form.save(commit=False)
variable.fieldname = value # you can add here extra field
variable.save()
return redirect('all_post')
或
form = CommentForm(request.POST)
if form.is_valid():
variable = modelname()
variable = form['comment'].value()
variable.fieldname = value # you can add here extra field
variable.save()
return redirect('all_post')