Django表单中的外键字段未保存初始化的值

2024-10-02 06:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有外键字段的表单。该字段被禁用,我用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}$

为什么当我禁用字段(外键字段)时,服务器不接受该值。即使是初始化,当发布时,它也会提交一个空值。在


Tags: py名称id表单isrequest错误公司
2条回答

不确定这是否是问题所在,但我认为您的表单将始终显示ticket_id,因为这是在覆盖instanceinitial表单选项中给出的。在

文档中对此进行了描述: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,但我建议在表单中这样做。在

相关问题 更多 >

    热门问题