Django models 如何在类视图下查询两个模型,获取与每个模型关联的特定属性,并将一个记录与另一个记录进行比较
我有两种工作模式和申请者,工作模式具有属性“年经验”,申请者模式具有属性“申请者经验”。我希望获得申请人的工作年限,并将其与每个特定工作所需的工作年限进行比较,只返回符合视图要求的工作年限 models.pyDjango 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
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()无效。我在基于函数的视图中完成了所有这些。喝点酒什么不管用?你的计数不正确,还是根本没有通过?