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",)