Почему queryset.only() игнорируется при использовании сериализаторов?

Не могли бы вы помочь мне с этой проблемой?

Я использую Django и REST Framework для своего приложения.

Я хочу получить отдельные значения 1 столбца в модели django, для этого я использую queryset с цепочкой фильтров и сериализатор с опцией many=True.

Вот мой код:

Определенный набор запросов:

queryset = CollectedCompaniesInfo.objects.all()
queryset = queryset.only('branch').distinct('branch')

Ожидаемый результат:

[{
    "id": 16,
    "branch": "McDonald's"
},
{
    "id": 80,
    "branch": "Wendy's"
}]

Я получаю:

[
{
    "id": 16,
    "branch": "McDonald's",
    "latitude": "35.94905003",
    "longitude": "-81.18771815",
    "state": "North Carolina",
    "address": "561 W Main Ave Taylorsville NC 28681 United States",
    "open_hours": "Mon-Sun 5 am - 11pm",
    "coordinate_x": 35.94905003,
    "coordinate_y": -81.18771815
},
{
    "id": 80,
    "branch": "Wendy's",
    "latitude": "35.24987478",
    "longitude": "-80.95769756",
    "state": "North Carolina",
    "address": "5501 Birmingham Pkwy Concourse A Charlotte NC 28208 United States",
    "open_hours": "Sun - Thu 6:30am -2am/Fri-Sat  6:30am -3am",
    "coordinate_x": 35.249874778495084,
    "coordinate_y": -80.95769756353488
}]

Код действияViewset:

serializer = CollectedCompaniesInfoModelSerializer(queryset, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

Вы можете указать, какие fields должны быть включены в fields и исключены из exclude в качестве

class CollectedCompaniesInfoModelSerializer(serializers.ModelSerializer):
    class Meta:
        model =. CollectedCompaniesInfo
        fields = ('id', 'branch')

Если вы хотите указать id и branch только для чтения, то вы можете использовать read_only_fields как

class CollectedCompaniesInfoModelSerializer(serializers.ModelSerializer):
    class Meta:
        model =. CollectedCompaniesInfo
        fields = '__all__'
        read_only_fields = ('id', 'branch')
Вернуться на верх