Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
django验证多个内联表单_Django_Forms_Validation - Fatal编程技术网

django验证多个内联表单

django验证多个内联表单,django,forms,validation,Django,Forms,Validation,我正在使用Django管理界面和Modelform验证 我的一个模型有一个问题,我想不出一种方法让内联表单检查字段的唯一性。例如,有两个字段为“name”的内联对象。如果两者包含相同的名称,我想引发验证错误 从我所看到的,每个内联都作为一个单独的表单进行了验证,因此很难将它们绑定在一起并进行检查 (非常)基本的想法: Class Parent name charfield inlines [Child] Class Child name ch

我正在使用Django管理界面和Modelform验证

我的一个模型有一个问题,我想不出一种方法让内联表单检查字段的唯一性。例如,有两个字段为“name”的内联对象。如果两者包含相同的名称,我想引发验证错误

从我所看到的,每个内联都作为一个单独的表单进行了验证,因此很难将它们绑定在一起并进行检查

(非常)基本的想法:

Class Parent        
    name    charfield
    inlines [Child]

Class Child
    name    charfield   <- I'd like to make sure this is unqiue within the inlines
    age     intfield
类父类
姓名查菲尔德
内联线[儿童]
班童

name charfield您可以编写自己的FormSet类,并创建一个干净的可调用:

class BaseDateFormSet(BaseInlineFormSet):
'''run some validation on the forms dates values'''

def clean(self):
    super(BaseDateFormSet, self).clean()
    if any(self.errors):
        return
    for form in self.forms:
        start_date = form.cleaned_data.pop('start_date', None)
        end_date = form.cleaned_data.pop('end_date', None)

        if start_date and end_date:
            if start_date >= end_date:
                raise ValidationError("The end date is before the start date.")
要使用,请传递到formset工厂:

    MyFormSet = inlineformset_factory(<parent model class>, <model class>, \
                         extra=1, formset=BaseDateFormSet)
MyFormSet=inlineformset\u工厂(\
extra=1,formset=BaseDateFormSet)

您似乎可以采取与此处类似的方法:谢谢,这看起来很有希望-我明天会尝试将其插入。现在无法获取代码