Почему Django выдает мне ошибку ValueError, когда я ссылаюсь на класс внутри одной модели?

Я создаю простое приложение для рецептов, и пока у меня есть две модели: Ingredient и Recipe.

В каждом рецепте должно быть несколько ингредиентов, поэтому я изложил свою модель следующим образом:

class Ingredient(models.Model):
    name = models.CharField(max_length=50)

class Recipe(models.Model):
    title = models.CharField(max_length=100)
    ingredients = models.ForeignKey(Ingredient, on_delete=CASCADE)
    instructions = JSONField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=SET_DEFAULT, default='Chef Anon')

Когда я делаю миграции, я ничего не получаю, но когда я мигрирую, я получаю эту ValueError:

ValueError: Cannot alter field cookbook.Recipe.ingredients into cookbook.Recipe.ingredients - they do not properly define db_type (are you using a badly-written custom field?)

Следуя примеру здесь (Django: Add foreign key in same model but different class), я пробовал устанавливать ingredients=models.ForeignKey(Ingredient, on_delete=CASCADE), а также использовать ленивый синтаксис ingredients=models.ForeignKey("Ingredient", on_delete=CASCADE), но каждый раз makemigrations не показывает никаких изменений, а migrate дает мне то же самое ValueError.

Попробуйте заменить on_delete=CASCADE на on_delete=models.CASCADE

Если вы не импортировали CASCADE отдельно от models.

Все же, в этом случае вы должны получить предупреждение, что "CASCADE не определен".

Кажется, я нашел проблему: мой models.py файл находился в корневом каталоге, а не в каталоге app.

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