私は次のようなモデルを持っています:
class Vote(models.Model):
vote_type = models.BooleanField()
voted_by = models.ForeignKey(User, related_name='voted_by')
voted_for = models.OneToOneField(User, related_name='voted_for')
article = models.ForeignKey(Article, null=True, blank=True)
dtobject = models.DateTimeField(auto_now_add=True)
ユーザーがオブジェクトに投票できるのは1回だけであることを確認したいと思います。したがって、私の見解では、私は次のことを行います。
v = Vote.objects.get_or_create(
vote_type = vtype.get(field_name),
voted_by_id = request.user.id,
voted_for_id = mobj.shared_by_id,
shared_object_id = oid
)
初めて正常に動作しますが、既存の投票がある場合、整合性エラーが発生します。理由は明らかです。上記のモデルとビューを考えると、オブジェクトが投票されていないことを確認するための良いアプローチは何でしょうか?