为什么在使用序列化程序时忽略queryset.only()



你能帮我解决这个问题吗?

我的应用程序使用Django和REST框架。

我想在django模型中检索1列的不同值,为此我使用了一个带有链接过滤器的查询集和一个带有选项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
}]

视图集操作代码:

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')

如果要将idbranch指定为只读,则可以使用read_only_fields作为

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

最新更新