SerializerMethodField用于多个字段

问题描述 投票:0回答:1

这个问题可能有一个更简单的答案。但我不知道它是什么。请考虑这个例子

class ModelA(models.Model):
    a1 = models.CharField(max_length=100, default="")
    a2 = models.CharField(max_length=100, default="")

class ModelB(models.Model):
    modela = models.ForeignKey(ModelA, on_delete=models.CASCADE)
    b2 = models.CharField(max_length=100, default="")

ModelBSerializer以下,我可以使用a1a2场获得ModelASerializerMethodFieldmodela的值。

class ModelBSerializer(serializers.ModelSerializer):
    modela = SerializerMethodField()
    class Meta:
        model = ModelB
        fields = (
            'modela',
            'b2',
        )

    def get_b1(self, obj):
        return obj.modela.a1  # or obj.modela.a2

但如果我想要a1a2怎么办?而且我希望它们与ModelBserializermodela一起被包括在b2领域。

django django-models django-rest-framework django-serializer
1个回答
0
投票

使用source参数如下,

class ModelBSerializer(serializers.ModelSerializer):
    modela = serializers.StringRelatedField()
    a1 = serializers.CharField(source='modela.a1')
    a2 = serializers.CharField(source='modela.a2')

    class Meta:
        model = ModelB
        fields = ('b2', 'modela', 'a1', 'a2')

qazxsw poi返回qazxsw poi表示qazxsw poi类

© www.soinside.com 2019 - 2024. All rights reserved.