だから、私はように使用していますRating
という名前のDjangoの休憩Frameworkのモデルを持っている:Djangoの残りのフレームワークモデルに独自のタプル条件を強制
class Rating(models.Model):
id = models.AutoField(primary_key=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
event = models.ForeignKey(Event, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
rating_for = models.TextField(choices=RATING_FOR)
rating = models.IntegerField(choices=RATING_NUMS)
class Meta:
unique_together = (("person", "event", "rating_for"),)
私は一人が持っていないことを確認し、検証条件を強制したいです1つのイベントに対して2つ以上の評価。基本的には、重複チェック。
あなたが見たように、私がが働いていると考えているので、unique_together
を強制しています。これらの値のタプルを形成し、重複タプルを許可しないからです。
は、私はそれの意味するhacker
IDが1である場合、event
IDは2であり、rating_for
は、それが(比喩)タプル12food_event
を形成し、使用するこの特定12food_event
組み合わせを禁止し、「食品イベント」であることです。これにより、12networking_event
が許可されます。
明らかに、これはunique_together
の方法ではありません。 12food_event
の組み合わせを使用している場合は、food_event
を今後使用することはできません。1
と2
と同じです。
モデルレベルでタプルの一意性を強制する方法はありますか?シリアライザ/ビューで別の検証チェックを実行する必要がありますか?