在Django Rest Framework ModelSerializer中指定自定义嵌套对象

时间:2016-10-09 23:08:49

标签: python django django-rest-framework

我在我的数据库中指定了lat,长期为:

...
lat = models.DecimalField(_('Latitude'), max_digits=8, decimal_places=5, null=True, blank=True)
lng = models.DecimalField(_('Longitude'), max_digits=8, decimal_places=5, null=True, blank=True)
...

我希望我的ModalSerialization出现:

{
  ...
  "location": {
      "lat": ...,
      "long": ... 
  }
  ...
}

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

其中一种方法是您可以在下面的模型中创建属性。

@property
def location_info(self):
    return dict(
        lat=self.lat,
        lng=self.lng
    )

然后,您可以在序列化程序中创建一个dict字段,并将source指定为您的属性。由于它是属性,它可以只读字段。

location = serializers.DictField(source='location_info', read_only=True)