Python 试图在Django中搜索记录
尝试在django中构建一个简单的搜索页面 我有一个模型:Python 试图在Django中搜索记录,python,django,search,Python,Django,Search,尝试在django中构建一个简单的搜索页面 我有一个模型: class Person(models.Model): ROLE_CHOICES = ( ('Eng', 'Engineering'), ('Product', 'Product'), ('QA', 'QA'), ('Mrkt', 'Marketing'), ('Fin/Off', 'Finance / Office'), \ ('C
class Person(models.Model):
ROLE_CHOICES = (
('Eng', 'Engineering'),
('Product', 'Product'),
('QA', 'QA'),
('Mrkt', 'Marketing'),
('Fin/Off', 'Finance / Office'), \
('Care', 'Care'),
('Sales', 'Sales'),
)
ROLE_TYPE = (
('Full', 'Full Time'),
('CooP', 'Co-Op'),
('Part', 'Part Time'),
('Intern', 'Intern'),
)
first_name = models.CharField(blank=True, max_length=100)
last_name = models.CharField(blank=True, max_length=100)
date_added = models.DateField(auto_now_add=True)
date_start = models.DateField(auto_now=False)
date_leaving = models.DateField(auto_now=False)
role = models.CharField(max_length=100, default = "", choices = ROLE_CHOICES)
manager = models.ForeignKey('self', limit_choices_to = {'is_manager': True}, null=True, blank=True)
title = models.CharField(blank=True, max_length=100)
role_type = models.CharField(max_length=100, default = "", choices = ROLE_TYPE)
laptop_needed = models.BooleanField(default=True)
phone_needed = models.BooleanField(default=True)
desk_loco = models.CharField(blank=True, max_length=100)
mail_lists = models.ManyToManyField(Mailists, blank=True, null=True)
notes = models.CharField(blank=True, max_length=500)
is_manager = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_leaving = models.BooleanField(default=False)
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
我有这样的看法:
def search_people(request):
if request.method == 'POST':
search_text = request.POST['search']
else:
search_text = ''
persons=Person.objects.filter(last_name__contains=search_text)
return render(request, 'hireterm/search.html', {'persons': persons})
从该表格中获取:
<form class="searchfield" method="get" action="/search/" autocomplete="off">
Search: <input type="text" name="search">
<input id="searchbuttonmain" type="submit" class="subbtn" value="Search">
</form>
搜索:
并呈现此页面:
{% if persons.count %}
{% for p in persons %}
<p><a href="/edit_person/{{ p.id }}/">{{ p.last_name }}</a><p>
{% endfor %}
{% else %}
<p> OH NOES <p>
{% endif %}
{%if persons.count%}
{个人百分比中p的百分比}
{%endfor%}
{%else%}
哦,没有
{%endif%}
它总是返回所有Perosns记录,而不是按姓氏过滤的记录,我不知道为什么。我肯定我错过了一些琐碎的事情,但我看不到。谢谢你的意见 您的表单方法是
GET
,但它应该是POST
。这会导致它点击if-语句中的else
-部分。因此,Person
对象在其last\u name
字段中包含空字符串,但这将匹配所有对象