我有两个具有外键关系的模型:
class Company(models.Model):
field 1
field 2
class Employee(models.Model):
company = Model.ForeignKey('Company')
field 3
field 4
我想JSON序列化一个公司实例,并包括所有与之有外键关系的员工。 IE,我想创建类似于以下内容的JSON,因为它包含公司的所有字段以及所有相关员工的所有字段。
[
{
"pk": 2,
"model": "app.company",
"fields": {
"field1": "value",
"field2": "value",
"employee": [
{
"pk": 19,
"model": "app.employee",
"fields": {
"field3": "value",
"field4": "value",
}
},
{
"pk": 25,
"model": "app.employee",
"fields": {
"field3": "value",
"field4": "value",
}
}
]
}
}
]
Django序列化程序不会序列化关系。这里的其他问题已经问到如何深度序列化,但在相反的方向 - IE,序列化一名员工及其相关公司。对这些问题的回答指出,wadofstuff django-full-serializer插件允许你进行这种深度序列化。问题是wadofstuff插件只是单向遵循这些关系 - 它不会遵循反向外键约束。所以,我正试图在这里推销自己。有关如何实现这一目标的任何建议吗?
答案 0 :(得分:0)
所以,这是一个超级预算方式,这可以用于我的目的,但我觉得必须有一个更好的方法(包括它在这里以防其他人正在寻找如何做这个)。它对我有用只因为我一次只发送一个Company对象,因此它没有明确保留关系层次结构这一事实并不是什么大事。
鉴于“公司”的公司实例:
companyJSON = serializers.serialize('json', [company, ])
employeeJSON = serializers.serialize('json', company.employee_set.all())
fullJSON = companyJSON[:-1] + ", " + employeeJSON[1:]