Django Admin 通用栈式内联表单集对空表单的验证

0 投票
1 回答
942 浏览
提问于 2025-04-18 11:10

我在使用Django的通用堆叠内联表单集时遇到了问题。 我知道它会为内联创建一个表单集,我这里有一个通用模型,它被创建为内联,然后进一步使用。 我的问题是,由于Django库的代码,表单集的第一个表单是空的。 https://github.com/django/django/blob/master/django/forms/formsets.py#L164

好吧,如果我把这一行的值改成False,那么我的表单集就不允许为空了。

我只是想检查一下我的表单集中第一个表单是否是空的,如果是的话就返回。 这是我的代码: admin.py

   class RequiredInlineFormSet(BaseFormSet):
        def __init__(self,*args,**kwargs):
            super(RequiredInlineFormSet,self).__init__(*args,**kwargs)
            for form in self.forms:
                form.empty_permitted=False

    class ContactInline(generic.GenericStackedInline):
        model=Contact
        verbose_name='Contact Details '
        fieldsets=(
        ('Basic Information',{
           'classes': ('grp-collapse grp-open',),
           'fields':('salutation','first_name','last_name','organization','office_phone','mobile_phone','home_phone','date_of_birth','email',
                     'secondary_email','email_opt_out','reference','do_not_call','notify_owner'
                     ),        
        }),
        ('Other',{
           'classes': ('grp-collapse grp-open',),
           'fields':('notes','profile_picture','related_contact'),        
        }),                      
        )
        max_num=1
        formset = RequiredInlineFormSet()

    class LeadAdmin(admin.ModelAdmin):
        inlines=(ContactInline,)
        save_on_top = True  

可惜,这个方法不行,我知道我哪里完全错了。 我只是需要一些帮助,确保第一个表单在表单集中不能留空,如果留空就返回一个错误。 我在Stack Overflow上搜索了很多,但真的找不到能帮我的东西。 任何帮助都将非常感谢。 非常感谢!

1 个回答

0

我成功搞定了这个问题,不过是通过JavaScript来实现的。正如我之前提到的,我需要在表单中进行验证,而我正是通过JavaScript完成了这个验证。所以现在它可以正常工作了。

撰写回答