Ответ 1
unique_together может быть тем, что вы ищете.
Предположим, я хочу ежедневно записывать опросы пользователей. В этом случае у меня есть таблица с именем vote
, которая имеет столбцы poll
, choice
и user-id
. Итак, как я могу устранить ограничение (возможно, в моделях django или где это возможно), что poll
и user-id
оба не должны быть одинаковыми для любой записи, но, подобно тому, как один и тот же пользователь может голосовать за различные опросы один раз и, очевидно, различные пользователи может голосовать за тот же опрос. Надеюсь, я поняла.
unique_together может быть тем, что вы ищете.
Атрибут unique_together
класса Meta
вашей модели - это то, что вы ищете:
class Meta:
unique_together = ('poll', 'user_id')
Для получения дополнительной информации просмотрите django docs.
Вам нужен атрибут unique_together
:
https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together
Django 2.2 представил UniqueConstraint
и примечание в официальной документации по этой теме говорит о том, что unique_together
может быть unique_together
устаревшим в будущем.
Вы можете добавить UniqueConstraint
к опции Meta.constraints
вашего модельного класса следующим образом:
class Meta:
constraints = [
models.UniqueConstraint(fields=['poll', 'user_id'], name="user-polled")
]