Почему 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.