在 Django 中强制使用属性的最大记录数

Force maximum number of records with attribute in Django

在 Django 中,是否有一种“Djangonic”方法可以确保模型具有特定属性值的记录不超过 n 条?

例如,如何确保在下面的示例中 MyModel 的两条记录中没有更多的 my_attribute 设置为 True

class MyModel(models.Model):
     my_attribute= models.BooleanField(default=False)

您可以将一些简单的验证写入自定义的清理或保存方法中。

def clean(self, *args, **kwargs):
    if (self.my_attribute == True 
        and MyModel.objects.filter(my_attribute=True).count() >= 2):
        raise ValidationError('Two MyModel obj already have my_attribute=True!')
    super(MyModel, self).clean(*args, **kwargs)