Python 试图在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

尝试在django中构建一个简单的搜索页面

我有一个模型:

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
字段中包含空字符串,但这将匹配所有对象