DRF: только для целей представления. Как объединить два сериализатора

У меня есть

class Serializer1(serializers.ModelSerializer):
    class Meta:
        model = Model1
        fields = ("first_name","last_name")

class Serializer2(serializers.ModelSerializer):
    class Meta:
        model = Model2
        fields = ("phone","email")

Теперь я хочу показать оба сериализатора как один только в целях представления

like

{
first_name:
last_name:
phone:
email:
}

Как это сделать

Один быстрый способ сделать это - распаковать оба serializer.data в дикту типа:

s1 = Serializer1(obj)
s2 = Serializer2(obj)

combined = {**s1.data, **s2.data}

Сначала определите второй сериализатор, а затем первый

class serializer2(serializers.ModelSerializer):
    class Meta:
        model = model2
        fields = '__all__'

class serializer1(serializers.ModelSerializer):
    s2 = serializer2()
    class Meta:
        model = model1
        fields = '__all__'

затем создайте представление, используя сериализатор1.

Вернуться на верх