Несколько slug_field в SlugRelatedField Django Rest Framework - PullRequest
0 голосов
/ 05 августа 2020

В моем приложении 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'

Как мне получить first_name + last_name в моем JSON?

1 Ответ

0 голосов
/ 15 августа 2020

У меня была такая же проблема, как и у вас: в 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')
...