DJango queryset过滤器具有不同模型的外键

时间:2018-07-01 07:58:15

标签: python django orm

我是DJango ORM的初学者,我想按以下方式进行查询集

这是我制作的模型:

class Job(models.Model):
    title = models.CharField(max_length=255)
    description = models.CharField(max_length=255)
    tags = models.CharField(max_length=255, choices=job_type)
    recruter_id = models.ForeignKey(User)

    def __str__(self):
        return self.title

    objects = JobManager()

class StudentApplication(models.Model):
    job_fk = models.ForeignKey(Job)
    student_fk = models.ForeignKey(User)
    title = models.CharField(max_length = 255)

    def __str__(self):
        return self.title

在此招聘人员中,可以列出职位发布,数据将以Job模式提供,学生可以申请该职位,数据将以StudentApplication模式提供,并带有学生ID和职位ID作为外键。(我有一个用户模型,其中学生为user_type=1,招聘者为user_type=2) 现在,我要进行查询,以向招聘人员显示数据,即哪个学生申请了他的职位。

在SQL中,查询将为:

select * from StudentApplication as SA
left join Job as j on j.id = sa.job_fk
where j.recruiter_id = logged_in_user

如何使用DJango的ORM做类似的事情?

1 个答案:

答案 0 :(得分:0)

您可以按照以下方式查询招聘人员的职位申请中的学生申请:

# Retrieve a recruiter from `User` data model
$ recruiter = User.objects.get(email=<recuiter-email>)
# Now, Query student applications to our recruiter's job postings
$ student_applications = StudentApplication.objects.filter(job_fk__recruter_id=recruiter)

希望有帮助。