Reputation: 51
This code works if I send search word exactly like in the database. But if I have a task "Learn django" I want it to be found with "lea" or "djan"search string for example.
At Views.py:
def filter_tasks(request:HttpRequest):
context = {'task_list' : Task.objects.all().filter(content=request.POST['content'])
}
return render(request,'tasks/task_list.html', context)
At HTML form
<form action="{% url 'filter_tasks' %}" method="POST" autocomplete="off">
{% csrf_token %}
<div class="input-group">
<input type="text" class="form-control" name="content"
placeholder="search for tasks">
<div class="input-group-append text-info">
<span class="input-group-text bg-white py-0">
<button type="submit" class="btn btn-sm text-info">
<i class="fa fa-search fa-lg"></i>
</button>
At model:
class Task(models.Model):
content = models.TextField()
Upvotes: 3
Views: 371
Reputation: 88509
Use icontains
--(Django doc) lookup
def filter_tasks(request: HttpRequest):
context = {
'task_list': Task.objects.filter(
content__icontains=request.POST['content']
)
}
return render(request, 'tasks/task_list.html', context)
Upvotes: 4