SlugRelatedField Django Rest Framework 中的多个 slug_field

Rah*_*rma 2 django django-rest-framework

在我的 Django 应用程序中,我得到这样的 Json:

    "sales_order": 102, 
    "transport_by": 4, 
Run Code Online (Sandbox Code Playgroud)

我想扩展sales_order并将其替换为其所有者的first_name+ last_name。所以我尝试使用 slug 相关字段,但我不确定如何从中获取两个值。

这是我尝试过的:

class AtableSOSerializer(serializers.ModelSerializer):

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

    class Meta:
        model = MaterialRequest
        fields = "__all__"


class AtableFlowListSerializer(serializers.ModelSerializer):

    class Meta:
        model = AllotmentFlow
        fields = "__all__"


class AllotmentTableSerializer(serializers.ModelSerializer):

    flows = AtableFlowListSerializer(many=True)
    sales_order = AtableSOSerializer(read_only=True)

    class Meta:
        model = Allotment
        fields = "__all__"
Run Code Online (Sandbox Code Playgroud)

但出现了明显的错误:

AttributeError:“用户”对象没有属性“名字姓氏”

如何获取 JSON 中的名字 + 姓氏?

Yas*_*_1D 6

我和你有同样的问题:在 models.py 中向你的模型添加一个属性,然后在你的序列化器中使你的 slug_field 是你在模型中创建的属性。

@property
def full_name(self):
    return self.first_name+" "+self.last_name

owner = serializers.SlugRelatedField(read_only=True, slug_field='full_name')
Run Code Online (Sandbox Code Playgroud)