我有一个带有外键字段的表单。该字段被禁用,我用initial
初始化了该值。值显示出来了,但是当我提交它时,出现了一个错误:'This field is required'
在视图.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()
在表单.py公司名称:
^{pr2}$为什么当我禁用字段(外键字段)时,服务器不接受该值。即使是初始化,当发布时,它也会提交一个空值。在
不确定这是否是问题所在,但我认为您的表单将始终显示
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
数据来初始化它,而不是使用空白表单。在希望有帮助!在
在django文档中,它为表单字段声明了这一点:“默认情况下,每个字段类都假定该值是必需的,因此如果您传递一个空值(None或空字符串(”“)),那么clean()将引发ValidationError异常:”
所以,您应该这样做;ticketID=forms.ModelChoiceField(必选:假,查询集=tblTicket.objects.all(),小工具=窗体。选择(attrs={'disabled':'disabled')
或者在您的模型中,您会将字段的空白参数设置为False,但我建议在表单中这样做。在
相关问题 更多 >
编程相关推荐