在没有read_only=True
的Django REST框架中,可以通过以下步骤来获取Foreign Key值而不是id:
source
参数为相关对象的特定字段,而不是默认的id字段。例如,假设有一个模型(Model)Category
,其中包含一个外键字段parent
,你可以创建一个序列化器如下所示:from rest_framework import serializers
from .models import Category
class CategorySerializer(serializers.ModelSerializer):
parent = serializers.ReadOnlyField(source='parent.name')
class Meta:
model = Category
fields = ('id', 'name', 'parent')
在上面的例子中,我们将parent
字段声明为只读字段,并指定了source
参数为parent.name
,这样在序列化时会获取parent
对象的name
字段的值,而不是默认的id值。
CategoryViewSet
,可以在其中指定序列化器为上述定义的CategorySerializer
:from rest_framework import viewsets
from .serializers import CategorySerializer
from .models import Category
class CategoryViewSet(viewsets.ModelViewSet):
queryset = Category.objects.all()
serializer_class = CategorySerializer
在上面的例子中,我们将视图中的序列化器指定为CategorySerializer
,这样在请求处理过程中会使用该序列化器进行对象的序列化和反序列化。
通过以上步骤,你可以在没有read_only=True
的情况下获取Foreign Key值而不是id。关于Django REST框架的更多信息,你可以参考腾讯云的Django REST框架产品介绍页面。
领取专属 10元无门槛券
手把手带您无忧上云