起初很抱歉问了之前被问过多次的问题(我很确定是(。假设我有这样的模型关系:
class Balance(models.Model):
class Meta:
verbose_name = u"Balance"
verbose_name_plural = u"Balances"
name = models.CharField(max_length=200, verbose_name=u"Currency", null=True, blank=True)
count = models.FloatField(verbose_name=u"Count", null=True, blank=True)
account = models.ForeignKey(Account, verbose_name='Account', on_delete=models.CASCADE, null=True, blank=True)
def __str__(self):
return self.name
class Account(Page):
...
还有那些序列化程序
class BalanceSerializer(serializers.ModelSerializer):
class Meta:
model = accounts.Balance
fields = ('pk', 'name', 'count')
class AccountSerializer(serializers.ModelSerializer):
balance_set = BalanceSerializer(many=True, required=False)
class Meta:
model = accounts.Account
fields = (... , balance_set )
所以帐户序列化程序像这样返回我 json 输出:
{
*some account information*
balance_set:
{
pk: 1
name: foo,
count: bar
}, ...
}
但我希望它像这样balance_set回报我:
{
*some account information*
balance_set:
{
foo: bar,
balanceName:balanceCount,
}
}
我已经在文档中搜索并查找了,但无法理解如何做到这一点。
您可以重写序列化程序的to_representation
来执行此操作
def to_representation(self, instance):
data = super(AccountSerializer, self).to_representation(instance)
balance_set = data.get('balance_set')
for i in balance_set:
foo = i.get('name')
bar = i.get('count')
data['balance_set'][foo] = bar
return data