我有一个模特:
class MyModel(models.Model):
a = models.IntegerField()
b = models.IntegerField()
c = models.IntegerField()
现在,我需要将类似unique_together(a,b, max_occurences=3)
约束的内容添加到上面的模型中(这样每对(a,b)最多可以有c
个值,理想情况下那些c
的3个值对于给定的(a,b)也应该是唯一的,但是我不知道要寻找什么(如果在MySQL中甚至存在这样的东西)。有什么类似的东西,或者我必须做这样的事情:
class MyModel(models.Model):
a = models.IntegerField()
b = models.IntegerField()
c1 = models.IntegerField()
c2 = models.IntegerField()
c3 = models.IntegerField()
class Meta:
unique_together = ('a', 'b')
- 自己处理c1..c3?
答案 0 :(得分:0)
您应该覆盖模型的save()方法并在每次保存之前检查约束,如果违反约束则引发ValueError。
class MyModel(models.Model):
a = models.IntegerField()
b = models.IntegerField()
c = models.IntegerField()
def save(self):
try:
# Check values in model here
except:
raise ValueError("Cannot save more than 3 Cs with an A")
super(MyModel, self).save(*args, **kwargs)