[英]Foreign Key field in django form not saving initialized value
我有一个带有外键字段的表格。 该字段被禁用,我使用initial
初始化了值。 该值显示出来,但是当我提交它时,显示错误: 'This field is required'
views.py:
def updateTicket(request, ticket_id):
ticketDetails = editTicket1.objects.filter(ticketID=ticket_id).last()
updateTrouble = editTrouble(request.POST or None, instance=ticketDetails, initial={'ticketID': ticket_id})
if updateTrouble.is_valid():
updateTrouble.save()
forms.py:
ticketID = forms.ModelChoiceField(queryset=tblTicket.objects.all(),widget=forms.Select(attrs={'disabled':'disabled'}))
当我禁用该字段(外键字段)时,服务器为什么不接受该值呢? 即使进行初始化,在发布时,它也会提交空白值。
从django文档中,它针对表单字段进行了说明:“默认情况下,每个Field类都假定该值是必需的,因此,如果您传递一个空值– None或空字符串(“”)– clean()将引发ValidationError异常:“
因此,相反,您应该这样做; ticketID = forms.ModelChoiceField(必填:False,queryset = tblTicket.objects.all(),widget = forms.Select(attrs = {'disabled':'disabled'}))
或在您的模型中,您会将字段的空白参数设置为False,但我建议在Form中进行设置。
不确定这是否是问题,但我认为您的表单总是通过显示ticket_id
因为这是在覆盖instance
的initial
表单选项中提供的。
在文档中对此进行了描述: https : //docs.djangoproject.com/en/1.8/topics/forms/modelforms/#providing-initial-values
另外-如果您想正确处理表单,我认为您应该像在文档中描述的那样扩展update ticket
功能: https : //docs.djangoproject.com/en/1.8/topics/forms/#the-view
上面的示例与您的代码之间的区别在于else
语句,在该语句中,您使用代码中提供的initial
数据代替空白表格来启动它。
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.