在Django中,是否存在一个"Djangononic";确保一个模型不超过具有某个属性值的n
记录的方法?
例如,在下面的示例中,如何确保MyModel
的两条记录中不再有my_attribute
设置为True
?
class MyModel(models.Model):
my_attribute= models.BooleanField(default=False)
您可以在自定义的clean或save方法中编写一些简单的验证。
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)