Как сериализовать список строк - PullRequest
2 голосов
/ 18 апреля 2020

У меня довольно легкая проблема с моим сериализатором. Мой взгляд:

@api_view(['GET'])
def get_recipes_list(request):
    recipes = Recipe.objects.all()

    serializer = RecipeListSerializer(recipes, context={'request': request}, many=True)
    return Response(serializer.data)

Мой сериализатор:

class RecipeListSerializer(serializers.Serializer):
    name = serializers.CharField()

Вывод, который я получаю:

[
    {
        "name": "Gelato1"
    },
    {
        "name": "Gelato2"
    },
]

То, что я желаю:

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]

Я пытался: recipes = Recipe.objects.all().values_list('name', flat=True) Так что QuerySet имеет список имен, но я получаю AttributeError. Буду благодарен за любые советы.

1 Ответ

1 голос
/ 18 апреля 2020

Если вы используете values_list с атрибутом flat, вам не нужно передавать его в сериализатор. Для вывода вы можете добавить результат в Response:

recipes =list(Recipe.objects.values_list('name', flat=True)
return Response({'output':recipes})
...