gpt4 book ai didi

python - django-rest-framework:为什么我的 API 为我的 ENUMS 返回键而不是值?

转载 作者:行者123 更新时间:2023-12-01 07:16:38 25 4
gpt4 key购买 nike

我在第一次 API 开发中陷入了困境。我希望有人能告诉我我做错了什么。

这是我的models.py:

from django.db import models

# Create your models here.

COUNTRY_LIST = [('PL', 'Poland'), ('DK', 'Denmark'), ('FI', 'Finland')]


class Trip(models.Model):

startDate = models.DateField()
endDate = models.DateField()
country = models.ChoiceField(choices=COUNTRY_LIST, max_length=2)

这是我的serializers.py:

from rest_framework import serializers
from trips.models import Trip, COUNTRY_LIST, CLIENTS_LIST, TRANSPORTS_LIST, STATUS_LIST

# Trip Serializer


class TripSerializer(serializers.ModelSerializer):
class Meta:
model = Trip
fields = '__all__'

这是我的api_views.py:

from rest_framework.exceptions import ValidationError
from rest_framework.generics import ListAPIView, CreateAPIView, RetrieveUpdateDestroyAPIView
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter
from trips.serializers import TripSerializer
from trips.models import Trip
import re

class TripList(ListAPIView):
queryset = Trip.objects.all()
serializer_class = TripSerializer
filter_backends = (DjangoFilterBackend, SearchFilter)
filter_fields = ('id', 'tripStatus', 'employeeId')
search_fields = ('place', 'remarks')

这是我的urls.py:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include

import trips.views
import trips.api_views

urlpatterns = [
path('trip', trips.api_views.TripList.as_view()),

问题描述:目前,按照上面的设计,我的 API 响应数据,其中返回枚举的 key ,如下所示:

{
"id": 6,
"startDate": "2019-11-04",
"endDate": "2019-11-05",
"country": "PL"
},

我想我需要在serializers.py中实现一些更改以使其响应如下:

{
"id": 6,
"startDate": "2019-11-04",
"endDate": "2019-11-05",
"country": "Poland"
},

有人可以在这里给我一些建议吗?预先感谢您。

最佳答案

,您可以指定 source=... 参数并指定它应使用该值的显示:

class TripSerializer(serializers.ModelSerializer):
country = serializers.CharField(<b>source='get_country_display'</b>)

class Meta:
model = Trip
fields = '__all__'

因此,这里我们不使用 country 值本身,而是使用 get_country_display

关于python - django-rest-framework:为什么我的 API 为我的 ENUMS 返回键而不是值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57919386/

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