Почему Django QuerySet не поддерживает соединение со многими людьми? - PullRequest
1 голос
/ 02 июня 2019

Как я могу генерировать SQL как фрагмент 1-2?


Почему Django поддерживает только prefetch_related ('product_set') без поддержки объединения с manytomanyField?

Конечно, я могу сделатьпохожий набор запросов, например

Order.objects.filter (product_set_included_order__name = 'product_name1')

он генерирует SQL с объединением двух сущностей

, но у него есть большая проблема, которая не затронулаиндекс (пк)


# 1-1 this is snippet code 
# in Django model of relationship with ManyToMany

class Product(models.Model):
    name: str = models.CharField(null=False, max_length=128)
    price: int = models.PositiveIntegerField(null=False, default=0)


class Order(models.Model):

   product_set= models.ManyToManyField(to=Product)
# 1-2  i want generate this SQL but it's impossible!!

SELECT *
  FROM "order"
 INNER JOIN "orderedproduct"
    ON ("order"."id" = "orderedproduct"."related_order_id")
 INNER JOIN "product"
    ON ("orderedproduct"."related_product_id" = "product"."id")
 WHERE "order"."id" = 1;
...