Как правильно использовать prefetch_related или select_related для достижения этой цели в django
эй ребята у меня есть эти модели
class Category(models.Model):
name = models.charfield()
class Product(models.Model):
category = models.ForeginKey(Category)
......
class Order(models.Model):
product = models.ForeigKey(Product)
я хочу получить продукт и категорию продукта из экземпляра заказа в одном запросе, я знаю, что для прямого иностранного ключа нужно использовать select related, но я не думаю, что есть способ получить категорию продукта, когда вы используете это:
Order.objects.all().select_related('product')
Так правильно ли использовать этот тогда:
Order.objects.all().prefetch_related('product__category')
Since the relation from Order
to Product
is a many-to-one relation, and that of Product
to Category
is a many-to-one relation, you fetch these both through .select_related(…)
[Django-doc]:
Order.objects.select_related('product__category')
Вы можете выстраивать цепочки отношений в вызове select_related
с двойным подчеркиванием
Order.objects.all().select_related('product__category')