Создайте поле с сгруппированными атрибутами из модели в DRF - PullRequest
0 голосов
/ 11 марта 2020

Я хочу сгруппировать определенные c атрибуты из модели, а не сериализовать их по отдельности более или менее, как это

class MyModel(models.Model):
    attr1 = models.IntegerField()
    attr2 = models.IntegerField()
    attr3 = models.CharField()

, и сериализация выдаст это

{
   # other attrs
   "grouped_attrs" : {"attr1": 23, "attr2": 848, "attr3": "foo"}
   # other attrs
}

1 Ответ

1 голос
/ 11 марта 2020

Вы можете использовать SerializerMethodField для этого.

from rest_framework import serializers

class MyModelSerializer(serializers.ModelSerializer):
    grouped_attrs = serializers.SerializerMethodField()

    class Meta:
        model = MyModel
        fields = ('grouped_attrs')

    def get_grouped_attrs(obj):
        return {
            'attr1': obj.attr1,
            'attr2': obj.attr2,
            'attr3': obj.attr3
        }
...