我有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
我想要一个针对jobapplication模型中给定job_id的查询集,它应该参考对作业id的resume id来获取其所有相关的教育,经验,技能等。 对于Now,我在单个quires中执行此操作,例如我从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_id
和resume_id
,我写了另一个查询来获取用户详细信息及其简历详细信息。
答案 0 :(得分:0)
要回答你的问题,你只能对每个模型进行单独的查询,如果你有resume_id
(我在你拥有的每个模型上看到它),也许你可以将它们包装在一个函数中,但它没有'得到任何比这简单。
我认为你的根本问题在于数据库设计。如果每个模型中都有resume_id
,为什么不将它们全部合并到Resume
模型中?听起来他们都属于该模型,如果每个Education
,Experience
,Skill
都是Resume
特定的。如果简历共享公共Education
,Experience
或Skill
,则只创建单独的模型,但它们应该是Resume
模型上的外键。同样在这种情况下,您只需查询Resume
模型并获取所有其他信息,而不是在多个地方搜索。