0

私はモデルを持っています:

 class MyModel(models.Model):
     a = models.IntegerField()
     b = models.IntegerField()
     c = models.IntegerField()

ここで、上記のモデルに制約のようなものを追加する必要があります((a,b) の各ペアに対してunique_together(a,b, max_occurences=3)最大 3 つの値が存在できるようにするため、理想的には、これらの 3 つの値も特定の (a,b) に対して一意である必要があります)。 b))、しかし、何を探すべきかわかりません (そして、このようなものが MySQL に存在するかどうか)。そのようなことはありますか、または私はこのようなことをしなければなりません:cc

 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 を自分で処理しますか?

4

1 に答える 1

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)
于 2010-06-30T19:39:10.063 に答える