django验证多个内联表单
我正在使用Django管理界面和Modelform验证 我的一个模型有一个问题,我想不出一种方法让内联表单检查字段的唯一性。例如,有两个字段为“name”的内联对象。如果两者包含相同的名称,我想引发验证错误 从我所看到的,每个内联都作为一个单独的表单进行了验证,因此很难将它们绑定在一起并进行检查 (非常)基本的想法:django验证多个内联表单,django,forms,validation,Django,Forms,Validation,我正在使用Django管理界面和Modelform验证 我的一个模型有一个问题,我想不出一种方法让内联表单检查字段的唯一性。例如,有两个字段为“name”的内联对象。如果两者包含相同的名称,我想引发验证错误 从我所看到的,每个内联都作为一个单独的表单进行了验证,因此很难将它们绑定在一起并进行检查 (非常)基本的想法: Class Parent name charfield inlines [Child] Class Child name ch
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)
您似乎可以采取与此处类似的方法:谢谢,这看起来很有希望-我明天会尝试将其插入。现在无法获取代码