在Django Rest框架中获取数据而不增加深度

在Django Rest框架中获取数据而不增加深度,django,django-rest-framework,django-serializer,Django,Django Rest Framework,Django Serializer,在我的Django应用程序中,我得到了相关字段的'pk'值,我想用一些其他字段的组合来替换它 Json: 要将2替换为first\u name我尝试了slugrelated字段,如下所示: 序列化程序.py class AtableSOSerializer(serializers.ModelSerializer): owner = serializers.SlugRelatedField(read_only=True, slug_field='first_name') cla

在我的Django应用程序中,我得到了相关字段的'pk'值,我想用一些其他字段的组合来替换它

Json:

要将
2
替换为
first\u name
我尝试了
slugrelated字段
,如下所示:

序列化程序.py

class AtableSOSerializer(serializers.ModelSerializer):

    owner = serializers.SlugRelatedField(read_only=True, slug_field='first_name')

    class Meta:
        model = MaterialRequest
        fields = ('owner',)


class AllotmentTableSerializer(serializers.ModelSerializer):

    sales_order = AtableSOSerializer(read_only=True)
    send_from_warehouse = serializers.SlugRelatedField(read_only=True, slug_field='name')
    transport_by = serializers.SlugRelatedField(read_only=True, slug_field='name')

    class Meta:
        model = Allotment
        fields = ('transaction_no', 'dispatch_date', 'send_from_warehouse', 'model', 'vehicle_number', 'transport_by',
                  'is_delivered', 'sales_order')
我得到了第一个名字

Json:

但是如何在
所有者
字段中获得
名字
+
姓氏
的组合

此处
owner
是与用户相关的字段

用作

类AtableSOSerializer(serializers.ModelSerializer):
所有者=序列化程序。SerializerMethodField()
def get_所有者(自身、实例):
返回“%s%s”%(instance.owner.first\u name,instance.owner.last\u name)
类元:
模型=物料请求

fields=('owner',)
这非常有帮助,非常有效!我将浏览文档以了解更多信息。谢谢
class AtableSOSerializer(serializers.ModelSerializer):

    owner = serializers.SlugRelatedField(read_only=True, slug_field='first_name')

    class Meta:
        model = MaterialRequest
        fields = ('owner',)


class AllotmentTableSerializer(serializers.ModelSerializer):

    sales_order = AtableSOSerializer(read_only=True)
    send_from_warehouse = serializers.SlugRelatedField(read_only=True, slug_field='name')
    transport_by = serializers.SlugRelatedField(read_only=True, slug_field='name')

    class Meta:
        model = Allotment
        fields = ('transaction_no', 'dispatch_date', 'send_from_warehouse', 'model', 'vehicle_number', 'transport_by',
                  'is_delivered', 'sales_order')
{
        "transaction_no": 2321,
        "dispatch_date": "2020-08-01T09:19:37Z",
        "send_from_warehouse": "Yantraksh Logistics Private limited_GGNPC1",
        "model": "Rent",
        "vehicle_number": "__________",
        "transport_by": "Market Transport Vendor",
        "is_delivered": false,
        "sales_order": {
            "owner": "Foo"
        }
    },
class AtableSOSerializer(serializers.ModelSerializer):
    owner = serializers.SerializerMethodField()

    def get_owner(self, instance):
        return "%s %s" % (instance.owner.first_name, instance.owner.last_name)

    class Meta:
        model = MaterialRequest
        fields = ('owner',)