首页 > 解决方案 > Django ORM。检索每个类别的 10 个项目

问题描述

我的 Django REST 中有 2 个模型。

class Category(models.Model):
    name = models.CharField()

class Item(models.Model):
    name = models.CharField()
    category = models.ForeignKey(Category)

我需要构建查询集,每个类别都有 10 个项目。我不知道我需要筛选类别或项目,但也许有人可以帮助我。

我想我需要这样的东西:Item.objects.filter ..如果具有相同类别的项目不> 10。

如果有人告诉我一些方法或决定,我会很高兴。

标签: djangodjango-rest-frameworkdjango-querysetdjango-orm

解决方案


你可以试试这个:

items = {}

categories = Category.objects.prefetch_related('item_set').all()
for category in categories:
    items[category.name] = list(category.item_set.all()[:10])

prefetch_related 方法将为您提供类别项目而无需不必要的数据库请求。


推荐阅读