【发布时间】:2020-12-15 19:05:59
【问题描述】:
我有以下型号:
class Developer(models.Model):
name = models.CharField(max_length=100)
class Skill(models.Model):
code = models.CharField(max_length=30)
class Experience(models.Model):
date_from = models.DateField(blank=True, null=True)
date_to = models.DateField(blank=True, null=True)
developer = models.ForeignKey(Developer, related_name='experience',
on_delete=models.CASCADE)
class SkillExperience(models.Model):
skill = models.ForeignKey(Skill, on_delete=models.CASCADE, related_name='skill_experience')
experience = models.ForeignKey(Experience, on_delete=models.CASCADE, related_name='skill_experience')
years_experience = models.IntegerField()
我知道,对于单个查询,要让拥有至少 5 年 Python 经验的开发人员,我可以这样做:
Developer.objects.filter(
experience__skill_experience__skill__code='Python'
).annotate(
total_years=Sum('experience__skill_experience__years_experience')
).filter(
total_years__gte=5
)
但是,如果我处于技能循环中并且需要检查 OR,那么如何进行操作,所以假设循环这个数组:[{code: 'python', years_experience: 5}, {code: 'node' , years_experience: 2}] 我需要返回拥有 5 年 Python 经验或 2 年节点经验的开发人员?
【问题讨论】:
标签: python django django-orm