这个问题可能会有一个简单的答案。但是我不明白那是什么。请考虑以下示例
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
以下,我可以使用a1
for a2
字段来获取ModelA
的{{1}}或SerializerMethodField
的值。 / p>
modela
但是,如果我同时想要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
和a1
怎么办?我希望它们与a2
和ModelBserializer
一起包含在modela
字段中。
答案 0 :(得分: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')
StringRelatedField()
返回 __str__
表示形式 modela
类