Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从save_formset访问Django模型字段_Python_Django_Django Models_Django Modeladmin - Fatal编程技术网

Python 如何从save_formset访问Django模型字段

Python 如何从save_formset访问Django模型字段,python,django,django-models,django-modeladmin,Python,Django,Django Models,Django Modeladmin,我在Django Model admin中有一个内联模型,我需要在保存项目之前创建一个条件,下面是我使用的代码: class-prcitemline(管理列表行): def get_表单(自我、请求、obj=None、**kwargs): 表单=超级(PRCITEMINE,自我)。获取表单(请求,目标,**kwargs) form.base_字段['product'].widget.attrs['style']='width:50px;' 报税表 排序=['id'] 型号=PRCItem 额外=

我在Django Model admin中有一个内联模型,我需要在保存项目之前创建一个条件,下面是我使用的代码:

class-prcitemline(管理列表行):
def get_表单(自我、请求、obj=None、**kwargs):
表单=超级(PRCITEMINE,自我)。获取表单(请求,目标,**kwargs)
form.base_字段['product'].widget.attrs['style']='width:50px;'
报税表
排序=['id']
型号=PRCItem
额外=1
自动完成_字段=[
“产品”,
“供应商”,
]
字段=(
“产品”,第1页
“数量”2
“单一价值”已更新,#4
“发布状态”,
“批准状态”,
“接收状态”,
)
只读_字段=[“发布_状态”,
“批准状态”,
“接收状态”,
]
def保存表单集(自我、请求、表单、表单集、更改):
obj=form.instance
如果obj.purchase\u request.is\u analizer:
返回HttpResponse(“您无法更改此设置”)
其他:
obj.save()
如您所见,我使用了
save_formset
方法来访问模型的字段,然后根据它进行过滤。但不管我添加了If语句,它都只会保存这些项

第一件事:

列表项
save\u formset
不应返回任何内容,而
HttpResponse
将不适用于您。 即使会,这也不是正确的方式。不提这将不是很有信息性

第一种解决方案
obj.purchase\u request.is\u analizer
应在表单验证期间完成

在那里引发的任何
ValidationError
都将传播到表单集,并显示在相关表单旁边的错误消息中

class PRCItemForm(forms.ModelForm):
    def validate(self):
        if obj.purchase_request.is_analizer:
            raise ValidationError("You can't change this")
def get_queryset(self):
    qs = super().get_queryset()
    return qs.exclude(purchase_request__is_analizer=True)