gpt4 book ai didi

python - 序列化程序返回不正确的输出

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:52 25 4
gpt4 key购买 nike

我有一个模型:

class Route(models.Model):
name = models.CharField("Номер маршрута", max_length=100)
evotor_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="пользователь эвотор", on_delete=models.CASCADE)
nds_CHOICES = (
(0, 'БЕЗ НДС'),
(1, 'Основная ставка 0%'),
(2, 'Основная ставка 10%'),
(3, 'Расчётная ставка 10%'),
(4, 'Основная ставка 18%'),
(5, 'Расчётная ставка 18%')
)
nds = models.IntegerField('НДС', choices=nds_CHOICES, default=0)
def __str__(self):
return self.name

class Meta:
verbose_name = "Номер маршрута"
verbose_name_plural = "Номера маршрутов"

我有那个模型的序列化器:

class RouteSerializer(serializers.ModelSerializer):
class Meta:
model = Route
fields = ("id", "name", "nds")

我的 APIView

class CarView(APIView):
authentication_classes = (BearerAuthentication,)
permission_classes = (IsAuthenticated,)
def get(self, request):
if 'route_id' not in request.GET or request.GET['route_id']=="":
#return Response({'message': 'Не указан ID маршрута'}, status=status.HTTP_400_BAD_REQUEST)
car = Car.objects.filter(evotor_user=request.user)
else:
car = Car.objects.filter(route__id=request.GET['route_id'])
serializer = CarSerializer(car, many=True)
print(serializer.data)
return Response(serializer.data)

使用这个序列化器

class CarSerializer(serializers.ModelSerializer):
route = RouteSerializer
class Meta:
model = Car
fields = ("id", "name", "route")

并且必须像这样返回我的输出:[ { “编号”:1, "名称": "dfgdfgdfg", “路线”: { '编号':1, '名称':'路线名称', 'nds':0, } }]

但它返回:[ { “编号”:1, "名称": "dfgdfgdfg", “路线”:1 }]

最佳答案

CarSerializer.route 声明错误。它必须是 RouteSerializer实例,如下所示:

class CarSerializer(serializers.ModelSerializer):
route = RouteSerializer(read_only=True)
class Meta:
model = Car
fields = ("id", "name", "route")

这称为“嵌套关系”,请参阅 https://www.django-rest-framework.org/api-guide/relations/#nested-relationships 处的文档

关于python - 序列化程序返回不正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58145976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com