我做了一个自定义管理器,它必须随机化我的查询:
class RandomManager(models.Manager):
def randomize(self):
count = self.aggregate(count=Count('id'))['count']
random_index = random.randint(0, count - 1)
return self.all()[random_index]
当我首先使用经理中定义的方法时,它可以正常工作:
>>> PostPages.random_objects.randomize()
>>> <PostPages: post 3>
我需要随机化已经过滤的查询。当我尝试使用管理器和链中的方法时,出现错误:
PostPages.random_objects.filter(image_gallary__isnull=False).randomize()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/home/i159/workspace/shivaroot/shivablog/<ipython-input-9-98f654c77896> in <module>()
----> 1 PostPages.random_objects.filter(image_gallary__isnull=False).randomize()
AttributeError: 'QuerySet' object has no attribute 'randomize'
过滤的结果不是模型类的实例,而是django.db.models.query.QuerySet
,所以分别没有我的管理器和方法。
有没有办法在链查询中使用自定义管理器?