Почему 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')