Django: Валидатор UniqueConstraint не работает ни для модели, ни для промежуточной модели
Мой проект - это платформа, где можно размещать свои рецепты с тегами (например, завтрак или ужин) и ингредиентами (морковь, молоко и т.д.).
Я хочу реализовать уникальное ограничение для рецепта, чтобы пользователь не мог создать рецепт, скажем, с двумя одинаковыми тегами или ингредиентами. Поэтому я решил использовать для этого валидатор django UniqueConstraint, но даже миграции не помогли, django говорит: "Изменений не обнаружено".
Вы должны добавить их в переменную с именем constraints
в опциях Meta
, так:
class RecipeTag(models.Model):
# ⋮
class Meta:
verbose_name = 'отношение рецепта к тэгу'
verbose_name_plural = 'отношение рецепта к тэгам'
# ↓ add this to a variable named constraints
constraints = [
models.UniqueConstraint(
fields=('recipe_id', 'tag_id'),
name='recipe_tag_unique_constraint'
)
]
Ограничение может распространяться только на таблицу RecipeTag
, поэтому recipe__id
и tag__id
не имеют особого смысла, вы можете работать с recipe_id
и tag_id
.