【问题标题】:Multiple slug_field in SlugRelatedField Django Rest FrameworkSlugRelatedField Django Rest Framework中的多个slug_field
【发布时间】:2020-08-15 20:44:20
【问题描述】:

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

    "sales_order": 102, 
    "transport_by": 4, 

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

这是我尝试过的:

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__"

但是出现了明显的错误:

AttributeError: 'User' 对象没有属性 'first_name last_name'

如何在 JSON 中获取 first_name + last_name?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    我和你有同样的问题: 在 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')
    

    【讨论】:

      猜你喜欢
      • 2016-09-09
      • 2014-11-27
      • 2019-02-08
      • 2013-11-11
      • 2014-05-13
      • 2019-02-22
      • 1970-01-01
      • 2021-03-09
      • 2020-05-04
      相关资源
      最近更新 更多