【问题标题】:Django form validation, raise error on fieldsetDjango 表单验证,在字段集上引发错误
【发布时间】:2015-06-19 18:12:18
【问题描述】:

我知道如何在我的 django 管理表单中的特定字段上引发错误,但我希望在字段集上引发错误。我目前有一个字段集中的复选框列表,并且希望在整个字段集中而不是在特定字段(也称为特定复选框)上引发错误。

这是我的 django admin.py

class EventAdmin(admin.ModelAdmin):
    form = EventForm
    fieldsets = [
        (None,  {'fields': [
                                'approval_state',
                                'title',
                                'description'
                            ]
                }
        ),
        ('Group Owner', {'fields': [
                                        'grpOwner_vcoe',
                                        'grpOwner_cssi',
                                        'grpOwner_essc',
                                        'grpOwner_tmscc',
                                        'grpOwner_inmc',
                                        'grpOwner_cc7',
                                        'grpOwner_ias',
                                    ]
                        }
        ), ...

 class EventForm(forms.ModelForm):

    # Form validation
    def clean(self):
        # Collect data
        start = self.cleaned_data.get('start')
        end = self.cleaned_data.get('end')

        grpOwner_vcoe = self.cleaned_data.get('grpOwner_vcoe')
        grpOwner_cssi = self.cleaned_data.get('grpOwner_cssi')
        grpOwner_essc = self.cleaned_data.get('grpOwner_essc')
        grpOwner_tmscc = self.cleaned_data.get('grpOwner_tmscc')
        grpOwner_inmc = self.cleaned_data.get('grpOwner_inmc')
        grpOwner_cc7 = self.cleaned_data.get('grpOwner_cc7')
        grpOwner_ias = self.cleaned_data.get('grpOwner_ias')

        if not (grpOwner_vcoe or grpOwner_cssi or grpOwner_essc or grpOwner_tmscc or grpOwner_inmc or grpOwner_cc7 or grpOwner_ias):
            if not self._errors.has_key('Group Owner'):
                self._errors['Group Owner'] = ErrorList()
            self._errors['Group Owner'].append('Test')

        # Check start & end data
        if start > end:
            if not self._errors.has_key('start'):
                self._errors['start'] = ErrorList()
            self._errors['start'].append('Event start must occur before event end')


        return self.cleaned_data

但这不是,我知道我可以在每个领域都提高它,但我发现如果我能在 fielset 周围做它会更优雅

【问题讨论】:

    标签: django django-forms django-validation


    【解决方案1】:

    Django 表单没有字段集的概念,它们属于ModelAdmin 类。因此,没有一种既定的方法可以将错误分配给字段集而不是特定字段。

    您可以尝试覆盖the admin templates,尤其是includes/fieldset.html。您可以在表单的 clean 方法中添加一些代码,以便轻松访问模板中的字段集错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2013-05-02
      • 2013-04-01
      相关资源
      最近更新 更多