Python Django筛选来自多个表的不同字段
我想从多个表中筛选不同的字段。例如,用户输入是“python,web开发人员”。我想同时显示“python”关键字技能匹配的作业和“web开发人员”标题匹配的作业Python Django筛选来自多个表的不同字段,python,django,django-views,Python,Django,Django Views,我想从多个表中筛选不同的字段。例如,用户输入是“python,web开发人员”。我想同时显示“python”关键字技能匹配的作业和“web开发人员”标题匹配的作业 In User table id | username | password ----------------------------- 1 | employer1 | sffddgfd 2 | employer2 | dfggfgfd In Company Table id | emp_id |
In User table
id | username | password
-----------------------------
1 | employer1 | sffddgfd
2 | employer2 | dfggfgfd
In Company Table
id | emp_id | companyname
-----------------------------
1 | 1 | abc
2 | 2 | xyz
In jobs table
+----+--------+--------------------+
| id | emp_id | title |
+----+--------+--------------------+
| 1 | 1 | Software Developer |
| 2 | 1 | Software Developer |
| 3 | 1 | testing |
| 4 | 1 | webdeveloper |
| 5 | 2 | Software Developer |
| 6 | 2 | testing |
| 7 | 2 | software |
+----+--------+--------------------+
In employerkeyskills table
+----+--------+--------+--------------------+
| id | emp_id | job_id | keyskills |
+----+--------+--------+--------------------+
| 1 | 1 | 2 | python |
| 2 | 1 | 2 | django |
| 3 | 1 | 2 | html |
| 4 | 1 | 3 | manual testing |
| 5 | 1 | 3 | automation testing |
| 6 | 1 | 4 | css |
| 7 | 1 | 4 | javascript |
| 8 | 1 | 4 | html |
| 9 | 1 | 4 | php |
| 10 | 2 | 5 | python |
| 11 | 2 | 5 | php |
| 12 | 2 | 6 | SQL |
| 13 | 2 | 6 | Manual Testing |
| 14 | 2 | 7 | sql |
| 15 | 2 | 7 | testing |
| 16 | 2 | 7 | python |
| 17 | 2 | 7 | html |
+----+--------+--------+--------------------+
models.py
views.py
使用上面的命令,我得到了重复的结果,起初我只使用keyskill进行过滤。但同样的工作重复两次。我要筛选双硅酸盐字段。您可以先拆分输入字符串:
key_skill, title = "python,web developer".split(',')
然后跨模型筛选作业:
jobs = Job.objects.filter(title=title, employerkeyskills__keyskills=key_skill)
您可以这样做:
jobs.object.filter(employerkeyskills_set__keyskills__in = ["python", "web developer"])
如果添加了相关的_名称arg:
class employerkeyskills(models.Model):
emp=models.ForeignKey(User,unique=False)
job=models.ForeignKey(jobs,unique=False, related_name='skills')
keyskills=models.CharField(max_length=50)
jobs.object.filter(skills__keyskills__in = ["python", "web developer"])
您可以尝试:
details = employerkeyskills.objects.filter(keyskills__icontains=search).distinct()
class employerkeyskills(models.Model):
emp=models.ForeignKey(User,unique=False)
job=models.ForeignKey(jobs,unique=False, related_name='skills')
keyskills=models.CharField(max_length=50)
jobs.object.filter(skills__keyskills__in = ["python", "web developer"])
details = employerkeyskills.objects.filter(keyskills__icontains=search).distinct()