2013-04-06 75 views
3

我有表领域的技能和标题。我想用单个输入过滤这些字段。从单个输入的两个字段的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']) 

虽然我试着这段代码无法获得输出。在输入框中输入标题或技能时,我需要输出,它与技能和标题相匹配。它应该是一个单一的input.some一个帮助我..

+0

你可能不应该叫表单域'skills'如果它被用来在工作中标题搜索太。称之为“搜索”。 – 2013-04-06 11:19:38

回答

6

您的代码搜索工作,其中两个标题和技能包含request.GET['skills']。为了找工作,其中标题或技能(或两者)包含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)