2015-09-07 69 views
0

我有Django模型說,Django的選擇查詢來獲取數據形成的所有子表

class JobApplication(models.Model): 
    job_application_id = models.AutoField(primary_key=True) 
    user_id = models.ForeignKey(User) 
    resume_id = models.ForeignKey(Resume) 

class Resume(models.Model): 
    resume_id = models.AutoField(primary_key=True) 
    resume_name = models.CharField() 
    .... other fields 

class Education(models.Model): 
    education_id = models.AutoField(primary_key=True) 
    resume_id = models.ForeignKey(Resume) 
    degree_name = models.CharField() 
    .... other fields 

class Experience(models.Model): 
    experience_id = models.AutoField(primary_key=True) 
    resume_id = models.ForeignKey(Resume) 
    company_name = models.CharField() 
    .... other fields 

class Skills(models.Model): 
    skill_id = models.AutoField(primary_key=True) 
    resume_id = models.ForeignKey(Resume) 
    skill_name = models.CharField() 
    .... other fields 

我想查詢,設置針對在線招聘模型給定的作業ID,它應該獲取所有的相關教育,經驗,技能等參考簡歷ID對工作ID。 現在,我做這個單奎雷斯,就像我取從job_application resume_id然後取參考

resume_against_job =Jobapplication.objects.get_query_set().get_complete_Jobapplication(job_id) 
for resum in resume_against_job: 
     resume_dict = {} 
     resume_id = resum['resume_id'] 
     user_id = resum['user_id'] 

恢復的詳細信息,然後針對這些user_idresume_id,我又寫了查詢,獲取用戶的細節和他們的簡歷細節。

回答

0

要回答你的問題,你只能對每個模型做單獨的查詢,如果你有resume_id(我在每個模型上看到它),也許你可以將它們包裝在一個函數中,但它不會得到任何比這更簡單。

我認爲你的根本問題是在數據庫設計中。如果您在每個型號中都有resume_id,爲什麼不將它們全部合併到Resume型號中?聽起來像他們都屬於該模型,如果每個EducationExperience,SkillResume具體。如果簡歷共享共同的EducationExperienceSkill,則只能創建單獨的模型,但它們應該是Resume模型中的外鍵。同樣在這種情況下,您只能在Resume模型上查詢並獲取所有其他信息,而不是在多個地方搜索。