Как в Django 1.11 создать дополнительные поля к связи многие-ко-многим?

from django.db import models
from food.models import Food

class Recipe(models.Model):
    description = models.TextField(null=True, blank=True)
    ingridients = models.ManyToManyField(
        Food,
        through=Ingredients,
        through_fields=('recipe', 'food')
    )

class Ingredients(models.Model):
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    food = models.ForeignKey(Food, on_delete=models.CASCADE)
    quantity = models.DecimalField(null=True, blank=True, max_digits=6, decimal_places=2)

Делал по документации, но получаю ошибку
in Recipe
through=Ingredients,
NameError: name 'Ingredients' is not defined
  • Вопрос задан
  • 706 просмотров
Решения вопроса 1
neatsoft
@neatsoft
Life is too short for bad software
т.к. класс Ingredients на момент использования еще не объявлен, его название нужно взять в кавычки:
...
    ingridients = models.ManyToManyField(
        Food,
        through='Ingredients',
        through_fields=('recipe', 'food')
    )
...

lazy relationships
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы