Django ManyToManyField作为单独的复选框,具有单独的错误消息

时间:2018-04-12 07:26:53

标签: django python-3.x django-forms django-2.0

对于每个可能的多对多关系,我希望表单具有单独的复选框。我知道这可以使用CheckboxSelectMultiple,但似乎每个复选框都没有单独的错误消息。

# models.py
class OptIn(models.Model):
    required = models.BooleanField(default=False)
    description = models.TextField()

    def __str__(self):
        return self.description

class Lead(models.Model):
    optins = models.ManyToManyField(OptIn, blank=True)

# forms.py
class LeadForm(forms.ModelForm):
    class Meta:
        model = Lead
        fields = ['optins']
        widgets = {
            'optins': forms.CheckboxSelectMultiple
        }

    def clean_optins(self):
        # Errors raised here are for the entire field

我希望在网站上注册的人(Lead)能够同意一些选择加入(OptIn)。选项加​​入对于用户来说可以是可选的或者是必需的。对于所需的选择加入,我想显示错误消息或在用户不同意时添加类。在clean_optins中引发错误会显示整个optins字段的错误。

CheckboxSelectMultiple窗口小部件的自定义模板可以很好地处理这个问题,还是有更好的方法来实现此功能?

0 个答案:

没有答案