Django: Попытка выбрать случайный результат, но получить объект не имеет ошибки len () - PullRequest
0 голосов
/ 30 июня 2018

Я создаю Django-Rest API, который возвращает случайный объект из набора запросов

  class AdViewSet(viewsets.ReadOnlyModelViewSet):
    serializer_class = AdSerializer
    queryset = Ad.objects.none()

    def get_queryset(self):
      if 'verify' in self.request.GET:
          # Return random object
          random_ad = Ad.objects.filter(verified=False).order_by('?').first()
          # return random_ad
          return random_ad

      return Ad.objects.all().order_by('-pk')

Но этот код возвращает ошибку object of type 'Ad' has no len().

Удаление команды .first() заставляет API возвращать набор запросов, поэтому я знаю, что он получает результаты. Но мне нужен один (случайный) экземпляр.

Кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 30 июня 2018

Ожидается QuerySet, содержащий результат. Используя first(), вы возвращаете один элемент из списка результатов.

Вместо использования first() попробуйте нарезать набор запросов:

random_ad = Ad.objects.filter(verified=False).order_by('?')[:1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...