AttributeError при попытке вернуть Id из набора запросов

Я создаю API для получения информации с шахматной доски на Django, у меня есть модель с полями: id, имя_фигуры, цвет, начальная_позиция.

МОДЕЛЬ

class ChessB(models.Model):

class Meta:

    db_table = 'chess'

id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
piece_name = models.CharField(max_length=200)
color = models.CharField(max_length=200)
initial_position = models.CharField(max_length=200)

СЕРИАЛИЗАТОРЫ

class ChessBSerializer(serializers.ModelSerializer):

class Meta:

    model = ChessB
    fields = '__all__'

VIEW

class ChessBList(generics.ListCreateAPIView):
serializer_class = ChessBSerializer

def get_queryset(self):
    queryset = ChessB.objects.all()
    piece_name = self.request.query_params.get('piece_name')
    if piece_name is not None:
        queryset = queryset.filter(piece_name=piece_name)
        queryset = queryset.values_list('id', flat=True)
    return queryset

Что я пытаюсь сделать: информирование моего piece_name как paramether, должно возвращать только мой Id

Например: вызов http://127.0.0.1:8000/chessb/?piece_name=queen должен вернуть:

{
 "id":"id-from-queen-here"
}

Но когда я попытался использовать values_list('id') в моем View, я получил ошибку следующего вида:

В чем здесь моя ошибка?

get_queryset должен возвращать Queryset... отсюда и название. Вы возвращаете список идентификаторов, что не работает. Если вы хотите указать определенный набор возвращаемых полей, это должно быть сделано в сериализаторе.

class ChessBSerializer(serializers.ModelSerializer):
    class Meta:
        model = ChessB
        fields = ("id",)
Вернуться на верх