我有一个为add
和edit
表单创建一个简单的Django表单。
我的问题是在people字段中使用ModelChoiceField
。在
在编辑表单中,除了字段ModelChoiceField
,所有值都解析正确。
在编辑表单中,字段是空的并且不保留值,知道为什么吗??在
def edit_work(request, pk):
instance = get_object_or_404(work, id=pk)
form = workForm(request.POST or None,instance=instance)
if form.is_valid():
note = form.save(commit=False)
note.save()
return HttpResponseRedirect('/work/success/')
return render(request,'edit_work.html', {'form': form})
def add_work(request):
if request.method == "POST":
form = workForm(request.POST)
if form.is_valid():
note = form.save(commit=False)
note.save()
return render(request, "succes/erga_success.html")
else:
form = workForm()
return render(request, 'add_work.html',{'form':form})
在表单.py在
^{pr2}$html页面:
<form enctype="multipart/form-data" method="POST" action="">{% csrf_token %}
{{form.peaople}}
.........
<input type="submit" value="create">
</form>
该值未被保留,因为您没有将其保存在任何位置,也没有分配它。在
- 用保存的值初始化窗体
^{pr2}$为什么要手动指定
peaople
字段?可能这些数据没有保存在工作模型.people字段并手动保存到其他位置?考虑到ModelChoiceField
是单值的,那么该字段很可能是ForeignKey 并且命名不同(而不是peaople
):如果模型窗体的自定义字段与模型上具有相同名称的字段不匹配,则默认情况下不会填充该字段。在可能的解决方案:
initial={'peaople': instance.some_human_fk_field}
参数。在some_human_fk_field
)的小部件/标签/错误消息等更改为ModelChoiceField, 'people', {'invalid': _(" -")}
,那么您don't need to define custom field就可以:- 如果
^{pr2}$work
模型上的peaople
字段不是FK(例如TextField),则需要在表单初始化后“手动设置”field.initial
:相关问题 更多 >
编程相关推荐