我有2个型号的产品和类别
class Product(models.Model):
categories = models.ManyToManyField(Category, related_name='products')
class ProductModelForm(ModelForm):
class Meta:
model = Product
fields = ['categories', 'name', 'description']
默认情况下,如果未引入类别,则Django不会引发验证错误。
如何使M2M关系成为必填字段?
答案 0 :(得分:1)
您不能在模型层上强制执行此操作,因为多对多关系会构造一个额外的表来表示该关系,并且没有(至少没有方言不变)指定每个ID的方法它所引用的表中应该存在。
不过,我们可以通过将其设置为ModelForm
来强制实施(例如,required=True
):
class ProductModelForm(EnhancedWidgetModelForm):
categories = forms.ModelMultipleChoiceField(queryset=Category.objects.all(), required=True)
class Meta:
model = Product
fields = ['categories', 'name', 'description']
答案 1 :(得分:0)
尝试:
class Product(models.Model):
categories = models.ManyToManyField(Category, related_name='products', blank=False)