Django models 如何在类视图下查询两个模型,获取与每个模型关联的特定属性,并将一个记录与另一个记录进行比较

Django models 如何在类视图下查询两个模型,获取与每个模型关联的特定属性,并将一个记录与另一个记录进行比较,django-models,Django Models,我有两种工作模式和申请者,工作模式具有属性“年经验”,申请者模式具有属性“申请者经验”。我希望获得申请人的工作年限,并将其与每个特定工作所需的工作年限进行比较,只返回符合视图要求的工作年限 models.py class Job(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) years_of_experience = models.IntegerField(blank=True, n

我有两种工作模式和申请者,工作模式具有属性“年经验”,申请者模式具有属性“申请者经验”。我希望获得申请人的工作年限,并将其与每个特定工作所需的工作年限进行比较,只返回符合视图要求的工作年限

models.py

class Job(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    years_of_experience = models.IntegerField(blank=True, null=True)

class Applicants(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name='applicants')
    experience = models.IntegerField(blank=True, null=True)
views.py

class QualifiedApplicantPerJobView(ListView):
    model = Applicants
    template_name = 'qualified_applicants.html'
    context_object_name = 'applicants'
    paginate_by = 2

    @method_decorator(login_required(login_url=reverse_lazy('login')))
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(self.request, *args, **kwargs)

    def get_queryset(self):
        return Applicants.objects.filter(job_id=self.kwargs['job_id']).order_by('-id')

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['job'] = Job.objects.get(id=self.kwargs['job_id'])
        return context
applicators.html

{% for applicant in applicants %}
   {% if applicant.experience >= job.years_of_experience %}
    <div class="col-lg-6">
       <div class="box applicant">
            <h4>{{ applicant.user.get_full_name }}</h4>
            <h4>{{ applicant.user.email }}</h4>
       </div>
   {% endif %}
{% endfor %}
{申请者%中的申请者%}
{%if applicator.experience>=job.years\u of\u experience%}
{{applicator.user.get_full_name}
{{applicator.user.email}
{%endif%}
{%endfor%}

我不想这样做,我希望能够在我的观点中这样做,获得合格申请人的数量(计数),并返回合格申请人。最好的方法是什么。谢谢

您可以在
过滤器
中添加额外的参数

当然,你需要先找到你想申请的职位,这样你就可以用指定的ID来确定该职位所需的
工作年限

然后,您可以使用
\u gte
筛选参数筛选
经验
字段大于所需年限的申请人

总而言之:

def get_queryset(self):
    # First we get the job itself.
    job = Job.objects.get(pk = self.kwargs['job_id'])

    # Add an extra argument to the filter method.
    return Applicants.objects
                .filter(job=job, experience__gte = job.years_of_experience)
                .order_by('id')
然后,您可以省略

{%if applicator.experience>=job.years\u of\u experience%}。。。{%endif%}


模板中的语句。

这是:=>“多个参数通过和在基础SQL语句中连接”文档helpedDjango(和Python)确实有很好的文档记录,因此使用文档通常可以节省大量时间和痛苦;-)美好的使用uu gte和u lte或exclude(u gte)分别适用于大于和小于。我尝试获取合格的数量(connt),并将其与上下文一起传递给另一个模板,该模板的合格数量=appenders.objects.filter(job=job,experience u gte=job.years of _experience)。count()无效。我在基于函数的视图中完成了所有这些。喝点酒什么不管用?你的计数不正确,还是根本没有通过?