对于每个可能的多对多关系,我希望表单具有单独的复选框。我知道这可以使用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
窗口小部件的自定义模板可以很好地处理这个问题,还是有更好的方法来实现此功能?