django从单个输入的两个字段中过滤

时间:2013-04-06 11:14:53

标签: django

我有桌面技能和头衔。我想用单个输入过滤这些字段。

models.py
class job(model.Model):
     title = models.CharField(max_length=30)
     skills = models.CharField(max_length=30)

search.html
<form>
<input type="text" name="skills" />
<input type="submit" />
</form>

views.py
jobs.objects.filter(skills__icontains=request.GET['skills'],title__icontains=request.GET['skills'])

虽然我尝试此代码无法获得输出。在输入框中输入标题或技能时我需要输出它与技能和标题相匹配。它应该是一个单一的输入。有人帮我..

1 个答案:

答案 0 :(得分:7)

您的代码会搜索BOTH标题和技能包含request.GET['skills']的作业。要搜索标题OR技能(或两者)包含request.GET['skills']的作业,您必须使用Q个对象:

from django.db.models import Q
...
search = request.GET['skills']
        #     skills contain search  OR  title contains search
query = Q(skills__icontains=search ) | Q(title__icontains=search )
job.objects.filter(query)