Django:基于外键获取大量项目的有效方法

时间:2018-05-30 08:13:25

标签: django python-3.x django-models django-queryset

以下是一个例子:

Models.py

class Category(models.Model):
    name = models.Charfield(max_length=120 blank=True, null=True, default=None)

class Product(models.Model):
    category = models.Foreignkey(Category)

这是我之前所做的:

products = [Product.objects.filter(category_id=i.id)[:6] for i in Category.objects.all()]

如何有效地获取每个类别包含6个产品的列表,而不使用'?'?

1 个答案:

答案 0 :(得分:2)

Postgres有一个从子查询制作数组的非常好的方法。因此,如果您使用Postgres,这将适合您。

sudo docker run -it --name container --cap-add=NET_ADMIN --device=/dev/net/tun --sysctl net.ipv6.conf.all.disable_ipv6=0 myimage 

这种方式效率更高: 让我们与您的版本进行比较

您的版本:1个类别查询+类别数量乘以1个产品查询。一个循环。

我的版本:1个查询。