想象以下模型:
class Person(models.Model):
name = models.CharField()
address_streetname = models.CharField()
address_housenumber = models.CharField()
address_zip = models.CharField()
我有一个ModelSerializer
暴露所有字段的 django rest 框架。但我希望能够将地址字段序列化为字典。因此,当序列化为 json 输出时:
{
name: 'Some name',
address: {
streetname: 'This is a test',
housenumber: '23',
zip: '1337',
}
}
我尝试创建一个AddressSerializer
class Address(object):
...
class AddressSerializer(serializers.Serializer):
streetname = serializers.CharField()
housenumber = serializers.CharField()
zip = serializers.CharField()
...
然后设置PersonSerializer.address
使用AddressSerializer
class PersonSerializer(serializers.ModelSerializer):
...
address = AddressSerializer()
这导致我的架构是正确的。我使用drf-yasg
. 它查看序列化程序以生成正确的模型定义。所以序列化器需要表示模式。
这就是我目前所处的位置。显然现在它失败了,因为模型中没有address
属性Person
。你将如何解决这个问题?