首页 > 解决方案 > 强制Django中具有属性的最大记录数

问题描述

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

例如,如何确保在下面的示例中没有两条记录MyModel设置my_attributeTrue

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

标签: djangodjango-modelsdjango-orm

解决方案


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

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)

推荐阅读