Django过滤器限制对象

khu*_*bui 1 django django-queryset

抱歉这个愚蠢的问题。

我不知道在哪里可以找到此解决方案或任何关键字参考。

比方说,我有 2 个模型 Place 和 Tips,并且:

# list of place id
place_id_list = [...]
Run Code Online (Sandbox Code Playgroud)

如何在 place_id_list 上过滤提示,该列表仅为每个地方检索 <= 5 个提示对象

这是模型:

class Place:
   ...
class Tip:
  # object_id is id of place
  object_id = models.PositiveIntegerField(editable=False)
  content_type = models.ForeignKey(ContentType)
Run Code Online (Sandbox Code Playgroud)

现在,我只使用for 循环,如:

tip_list = []    
for place_id in place_id_list:
    tip_list += Tip.objects.filter(object_id=place_id, content_type...)[0:5]
Run Code Online (Sandbox Code Playgroud)

但是这个查询似乎很慢。

有没有更好的解决办法?

谢谢。

Exp*_*tor 5

tip_list = []    
for place_id in place_id_list:
    tip_list += Tip.objects.filter(object_id=place_id, content_type...)[:5]
Run Code Online (Sandbox Code Playgroud)

没有比这更好的方法了,因为你知道 django 是惰性加载器,除非需要新对象,否则不会访问数据库,