django中的复合查询 - 使用extra,annotate还是raw sql?

时间:2012-05-27 00:56:36

标签: mysql sql django

我需要执行以下查询:

open_positions = Jobs.objects.all()
open_positions_with_apply = open_positions.extra(`has_applied` = 
            JobApplication.objects.filter(profile=profile, job=job).exists()

澄清我想做的事情:

profile = UserProfile.objects.get(id=1)
new_query_set = []
for job in Jobs.objects.all():
    has_applied = JobApplication.objects.filter(job=job, profile=profile)
    new_query_set.append(job with its has_applied value) # in pseudocode, not sure how this would be done

基本上给定一个配置文件(访问该页面的用户)和一个QuerySet的作业,我需要找到一个用户是否已应用的布尔值。我如何使用django查询执行此操作?

1 个答案:

答案 0 :(得分:0)

对于它的价值,我通过获取用户已申请的作业的job_id values_list以及模板 -

来解决此问题。
{% for job in jobs %}
    {% if job.id not in jobs_user_has_applied_to %}
    <form>...
    {% else %}
    You've applied for this
{% endfor %}