Заранее спасибо!
В Python я пытаюсь использовать UniqueConstraint следующим образом:
class CitationVote(models.Model):
user_who_voted = models.ForeignKey('User', on_delete=models.CASCADE)
vote = models.IntegerField(choices = [(-1, "down"), (1, "up")])
timestamp_voted = models.DateTimeField()
citation_id = models.ForeignKey('Citation', on_delete=models.CASCADE)
class meta:
constraints = [models.UniqueConstraint(fields=['user_who_voted', 'citation_id'], name='one_vote_pp')]
Хотя в документах Django 3.0 не упоминается никаких ограничений при использовании UniqueConstraint с внешним ключом (или Unique_Together, ни один из которых не работает в этом примере), ограничение, конечно, не применяется при тестировании. В миграциях я тоже не вижу ничего, что указывало бы на ограничение, применяемое в Postgres.
Для удовольствия я изменил код на:
class CitationVote(models.Model):
user_who_voted = models.ForeignKey('User', on_delete=models.CASCADE)
vote = models.IntegerField(choices = [(-1, "down"), (1, "up")])
timestamp_voted = models.DateTimeField()
citation_id = models.ForeignKey('Citation', on_delete=models.CASCADE)
class meta:
constraints = [models.UniqueConstraint(fields=['vote', 'timestamp_voted'], name='one_vote_pp')]
Увы, происходит то же самое (и да, я удаляю всю БД и воссоздаю ее каждый раз по * sh) - - никакие ограничения не применяются, в миграциях нет никаких оснований полагать, что это будет после их применения.
Я что-то здесь не так делаю?
Спасибо!