2012-10-25 64 views
4

我有兩個型號,一個外鍵關係:Django的深刻的序列 - 遵循反向外鍵約束

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

因此,這裏的超級這樣做的預算方式適用於我的目的,但我覺得必須有更好的方法(包括它在這裏,以防別人正在尋找如何做到這一點)。它只適用於我,因爲我一次只發送一個公司對象,因此它沒有明確保留關係層次結構並不是什麼大不了的事情。

「公司」

鑑於公司如:

companyJSON = serializers.serialize('json', [company, ]) 
employeeJSON = serializers.serialize('json', company.employee_set.all()) 
fullJSON = companyJSON[:-1] + ", " + employeeJSON[1:]