将有限的查询集传递给django-tagging中的related_to()

时间:2011-11-21 20:50:04

标签: django django-queryset tagging

我想在django-tagging中使用related_to()函数,我传递的查询集如下所示:

Chapter.objects.all().order_by('?')[:5]  #the important thing here is the "[:5]"

我的问题是这个功能显然使用了in_bunk()功能而你Cannot use 'limit' or 'offset' with in_bulk

如何限制我的查询集只传递5个对象,同时使用in_bunk?

我知道related_to()允许你传递变量num(它应该返回的对象数),但我不希望它每次都输出相同的查询集。所以我提出了随机排序并在传递给函数之前将其限制为的想法。但正如您所看到的:有限的查询集和bunk_it并不是很好地结合在一起。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,虽然它不是最好的,虽然它处理不必要的数据。我只是遍历与当前实例相关的模型的所有实例,然后我随机排序并切片:

related_objects = instance.related_to(Model)        # all related objects are found
related_objects = random.sample(related_objects,5)  # .. and afterwards sorted randomly and sliced