2017-11-20 9 views
1

だから、私はように使用しています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を今後使用することはできません。12と同じです。

モデルレベルでタプルの一意性を強制する方法はありますか?シリアライザ/ビューで別の検証チェックを実行する必要がありますか?

答えて

関連する問題