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.

Вернуться на верх