django - 多个字段的 SerializerMethodField
问题描述
这个问题可能有一个更简单的答案。但我不明白它是什么。请考虑这个例子
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
我可以获得使用for字段的a1
或a2
的值。ModelA
SerializerMethodField
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
anda2
怎么办?我希望它们与和ModelBserializer
一起包含在字段中。 modela
b2
解决方案
使用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
类
_
推荐阅读
- macos - 自制软件不升级已安装的依赖项
- node.js - 使用 Kourou 初始化应用程序,自托管难题
- postgresql - Sequelize upsert 返回未定义的 _previousDataValues
- time - 我如何知道 SLES11 系统上的系统启动时间?
- python - 如何将此 JSON 数组转换为 Python 字典?json.loads 返回类型错误
- python - 如何使用 brew 而不是 yum 执行以下步骤?
- bash - 将bash中的日期转换回iso
- spring - 2个不同时隙的Springframework cron表达式
- javascript - 如何使用 Apollo Server 进行社交登录?
- javascript - nodejs的fs模块可以在浏览器中使用Browserify吗?