我正在尝试建立求职者匹配系统。
我想按职务所需的关键技能筛选候选人。每个候选人都有多种技能。每个工作都有多个“必需的”工作技能,这是一个模型,也包含了技能的重要性。
我想筛选我的候选人,并只得到候选人如何拥有所有的关键技能所需的工作。关键技能定义为重要性= 3的工作技能。
对于给定的作业'job_1',我想获得相关的候选人如下:
critical_skills = job_1.required_skills.filter(importance=3)
relevant_candidates = Candidate.objects.filter('candidate how has all the critical_skills)
models.py:
class Skill(models.Model):
title = models.CharField(max_length=100, blank=False, unique=True)
class JobSkill(models.Model):
skill = models.ForeignKey(Skill, on_delete=models.CASCADE)
class Importance(models.IntegerChoices):
HIGH = 3
MEDIUM = 2
LOW = 1
importance = models.IntegerField(choices=Importance.choices)
class Job(models.Model):
title = models.CharField(max_length=100, null=False)
required_skills = models.ManyToManyField(JobSkill, blank=True)
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
class Candidate(models.Model):
title = models.CharField(max_length=100, blank=False, null=False)
full_name = models.CharField(max_length=100, blank=False, null=False)
skills = models.ManyToManyField(Skill, blank=True)
我会很感激任何帮助与此!!
谢谢你
1条答案
按热度按时间xkrw2x1b1#
您可以简单地按照“生成多值关系”链接过滤器,当生成过滤器中的多值关系时,我们限制每个过滤器的相关模型。因此,您可以执行以下操作:
注意:随着关键技能数量的增加,会产生越来越多的连接,导致查询变得越来越复杂,结果会很慢。
注意:与其使用
ManyToManyField
和JobSkill
表(该表只有Skill
的外键和importance
字段),不如使用ManyToManyField
和Skill
,并使用自定义直通模型(该模型将同时具有Job
和Skill
的外键和importance
字段)。请参阅多对多关系的附加字段