google_online
@google_online
My morning begins with coffee and Twitter.

Как получить поля действующего юзера?

У меня есть модель.

class UserLevel(models.Model):

    level = models.ForeignKey(Level, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    progress = models.IntegerField(default=0)


Я пробую получить эти поля в views.py так

class UserProgressList(APIView):

    def get(self, request, format=None):
        queryset_ = UserLevel.objects.filter(user_id=request.user.id)
        # queryset_ = UserLevel.objects.filter(user_id=request.user.id).values_list('progress', flat=True)
        serializer = UserLevelSerializer(queryset_)
        return Response(serializer.data)

но получаю
Original exception text was: 'QuerySet' object has no attribute 'level'.

Как я могу их получить ?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@zzzevaka
serializer = UserLevelSerializer(queryset_, many=True)


Так же в queryset вам стоит сделать select_related, чтобы избежать кучи лишних запросов к БД
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
filter возвращает не объект модели, а QuerySet объектов. Используйте get
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы