Я создал собственный менеджер, который должен рандомизировать мой запрос:
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
, так что у него нет моегоменеджер и метод, соответственно. Есть ли способ использовать собственный менеджер в цепочке запросов?