【发布时间】:2019-11-21 18:47:32
【问题描述】:
我正在使用 django rest 框架,并且正在构建组织和用户详细信息功能。我的模型、序列化器和模型视图集细节是这样的。
class OrganizationLatest(models.Model):
name = models.CharField(max_length=500, blank=True, null=True)
address = models.CharField(max_length=500, blank=True, null=True)
user = models.ForeignKey(User, default="", null=True, blank=True)
createdat = models.DateTimeField()
updatedat = models.DateTimeField()
class Meta:
managed = False
db_table = 'organization'
组织和用户的序列化器如下
class organizationLatestSerializer(serializers.ModelSerializer):
class Meta:
model=OrganizationLatest
fields =('name','address','user')
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('pk','username',)
read_only_fields = ['id','username']
class OrganizationLatestVieset(viewsets.ModelViewSet):
queryset = OrganizationLatest.objects.all() # dummy objec
serializer_class = organizationLatestSerializer
Rest api 返回
[
{
"name": "Org1",
"address": null,
"user": 7
},
{
"name": "Org2",
"address": null,
"user": 3
},
]
但我想要这种格式的 JSON,
[
{
"name": "Org1",
"address": "xxxxx",
"user": [
{
"username": "jhon",
"email": "a@g.com"
}
]
},
{
"name": "Org2",
"address": "998,abc",
"user": [
{
"username": "jhon",
"email": "a@g.com"
}
]
}
]
请告诉我如何实现预期的 json 格式。
谢谢大家,
【问题讨论】:
-
OrganizationLatest 与 User 有 1-M 的关系,因此 OrganizationLatest 的实例显然不会有用户列表,只有一个用户实例附加到它,所以您预期的 json 已经包含问题。
user字段值应该是 json 响应中的对象,而不是数组。
标签: python-2.7 django-models django-rest-framework