Django单表单集成两个关联模型时仅显示Farmer字段无拖拉机相关字段
问题原因
- 视图函数中错误调用了模型类
Post初始化表单,应该使用你定义的表单类PostForm,且GET请求场景下不需要给表单传入空的request.POST参数 - 模板中form起始标签未正确闭合,
{% csrf_token %}和两个表单变量被错误写在了form标签的属性定义区域,导致浏览器解析异常,post_form没有被渲染
修正后的代码
views.py
def add_post(request): if request.method == "POST": farmer_form = FarmerForm(request.POST) post_form = PostForm(request.POST) if farmer_form.is_valid() and post_form.is_valid(): farmer = farmer_form.save() post = post_form.save(commit=False) post.farmer = farmer post.save() return redirect(reverse("tractor.views.posts")) else: farmer_form = FarmerForm() post_form = PostForm() args = {} args.update(csrf(request)) args["farmer_form"] = farmer_form args["post_form"] = post_form return render(request,"tractor/form.html",args)
form.html
<div class="form-group"> <form method="POST" style="margin-left: 40px; margin-right: 100px" enctype="multipart/form-data" action="{% url 'tractor:add_post' %}" > {% csrf_token %} {{post_form}} {{farmer_form}} <input type="submit" class="btn btn-dark" value="Submit" /> </form> </div>
优化提示:你原代码里写的save(False)可以替换为save(commit=False),写法更贴合Django官方文档规范,避免后续版本出现兼容问题。
内容的提问来源于stack exchange,提问作者lex
相关产品推荐
相关产品推荐

