Мне нужно отфильтровать поле с ManyToMany в наборе запросов.Там должны оставаться только активные Продукты
class Product(model.Model):
name = models.CharField()
active = models.BooleanField(blank=True, default=True)
class Package(model.Model):
name = models.CharField()
products = models.ManyToManyField(Product)
Я пытался что-то вроде этого.
packages = Package.objects.all()
for package in packages:
active_products = package.products.filter(active=True)
package.products = active_products
, но он обновляет мои пакеты в базе данных, когда мне нужно только изменить набор запросов.
концепция ожидания (на самом деле не требуется вложенная структура, набор запросов в порядке):
packages = [
{'id': 1, 'name': 'First package', 'products': [
{'id': 1, 'name': 'first product', 'active': True},
{'id': 2, 'name': 'second product', 'active': True},
]},
{'id': 2, 'name': 'Second package', 'products': [
{'id': 2, 'name': 'first product', 'active': True},
{'id': 3, 'name': 'third product', 'active': True},
]},
{'id': 3, 'name': 'Third package', 'products': []}
]
Я думал о создании списка словарей из пакетов с помощью .values (), затем выполните итерацию и исключите все неактивные продукты.Вы знаете какой-нибудь более изящный способ сделать это?