Из документации:
Код: Выделить всё
>>> from django.db.models import FilteredRelation, Q
>>> Restaurant.objects.annotate(
... pizzas_vegetarian=FilteredRelation(
... "pizzas",
... condition=Q(pizzas__vegetarian=True),
... ),
... ).filter(pizzas_vegetarian__name__icontains="mozzarella")
Но если я это сделаю:
Код: Выделить всё
>>> from django.db.models import FilteredRelation, Q
>>> rests = Restaurant.objects.annotate(
... pizzas_vegetarian=FilteredRelation(
... "pizzas",
... condition=Q(pizzas__vegetarian=True),
... )
... )
... for rest in rests:
print(rest.pizzas_vegetarian)
AttributeError: "Объект ресторана не имеет атрибута "pizzas_vegetarian""
Мне нужен доступ к этому «pizzas_vegetarian» в отдельных блоках кода.
Возможно ли это с помощью FilteredRelation?
Какой метод мне следует использовать? использовать для понял?
ОБНОВЛЕНИЕ
Приведенный выше код взят из документации Django.
Но в моем случае каждый ресторан есть «пиццы», и каждая пицца может только относиться к одному типу: 1, 2, 3.
Что мне нужно: при запросе ресторанов (в одном запросе ), для каждого ресторана в наборе запросов задайте поля пицца1, пицца2, пицца3 — эти поля могут быть экземплярами модели связанных пицц или отсутствовать.
Похоже, мне нужно просто создать эти поля пицца1, пицца2, пицца3 внутри моей модели ресторана, но я действительно пытаюсь этого избежать.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -filteredr