Я создаю сайт электронной коммерции. У меня есть модель продукта, который содержит данные, общие для всех видов продукции:пользовательский запрос в django
class Product(models.Model):
name=models.CharField()
description=models.CharField()
categories = models.ManyToManyField(Category)
Тогда у меня есть SimpleProduct и BundleProduct, которые имеют FK к продукту и удерживать информацию, относящуюся к типу продукции. BundleProduct имеет поле m2m для других продуктов.
class SimpleProduct(Product):
some_field=models.CharField()
class BundleProduct(Product):
products = models.ManyToManyField(Product)
При отображении каталога я сделать один запрос к модели продукта , а затем другой запрос на продукт, чтобы получить дополнительную информацию. Это связано с большим количеством запросов.
Я могу улучшить его, используя select_related для полей simpleproduct и bundleproduct. Я могу улучшить его, используя приложение select_reverse для полей m2m, таких как категории.
Это большое улучшение, но есть более необходимые запросы, поскольку у BundleProduct есть несколько продуктов, которые также могут иметь отношения к другим продуктам (настраиваемый продукт).
Есть ли способ получить один запрос к Продукту, который будет получать категории m2m, one2one SimpleProduct и BundleProduct и продукты BundleProduct?
Будет ли этот пользовательский запрос выглядеть как django queryset со всеми менеджерами и свойствами?
Благодаря
Как дополнительные, так и необработанные, похоже, добавляют дополнительные поля к объекту. Возможно ли использовать необработанные запросы для глубоких вложенных объектов? В моем случае product.bundleproduct.products.all() [0] .simpleproduct.categories.all() [2]? – pablo