Django深度序列化-遵循反向外键约束
我有两个具有外键关系的模型:Django深度序列化-遵循反向外键约束,django,json,django-serializer,Django,Json,Django Serializer,我有两个具有外键关系的模型: class Company(models.Model): field 1 field 2 class Employee(models.Model): company = Model.ForeignKey('Company') field 3 field 4 我希望JSON序列化一个公司实例,并包括与之有外键关系的所有员工。也就是说,我想创建JSON,它看起来像下面这样,因为它包括公司的所有字段和所有相关员工的所有字段 [
class Company(models.Model):
field 1
field 2
class Employee(models.Model):
company = Model.ForeignKey('Company')
field 3
field 4
我希望JSON序列化一个公司实例,并包括与之有外键关系的所有员工。也就是说,我想创建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序列化程序不会序列化关系。这里的其他问题问了如何深度序列化,但方向相反——即,序列化一名员工及其关联公司。对这些问题的回答指出,Wadofsuff django完整序列化程序插件允许您进行这种深度序列化。问题是Wadofsuff插件只单向地遵循这些关系——它不会遵循反向外键约束。所以,我正试着在这里推出我自己的。关于如何做到这一点,有什么建议吗?因此,这里有一个超预算的方法,对我来说是可行的,但我觉得必须有一个更好的方法(包括这里,以防其他人正在寻找如何做到这一点)。它对我有效只是因为我一次只发送一个公司对象,因此它没有显式保留关系层次结构这一事实并不是什么大问题
给定“公司”的公司实例:
companyJSON = serializers.serialize('json', [company, ])
employeeJSON = serializers.serialize('json', company.employee_set.all())
fullJSON = companyJSON[:-1] + ", " + employeeJSON[1:]