В моем проекте я успешно использую django_tables2 для обеспечения обработки на стороне сервера.
Единственное, что я не знаю, как с этим справиться, это то, что после поиска, например, по имени в шаблоне, отображающем клиентов для моего приложения, поиск, несмотря на то, что он возвращает некоторые возвращаемые результаты, основанные на имени, не работает нормально , если записи результатов распространяются на более чем одной странице на основе моей нумерации страниц.
Другими словами, когда я нажимаю 2 (вторая страница моих возвращенных результатов), приложение отображает все страницы, относящиеся к клиентам 1 2 3 ... 45 далее (как я хочу, чтобы получить / клиентов / URL, а не 1 2 следующая структура только для пользовательских данных поиска.
Это происходит также при нажатии следующих и предыдущих кнопок.
Одно простое решение. Может быть, увеличить мой предел нумерации страниц, чтобы показать все возможные результаты на одной странице, но это решение не подходит для больших наборов результатов.
Существует ли какое-либо решение, позволяющее избежать загрузки и отображения всех страниц в строке поиска и сохранять только результаты моего пользовательского поиска?
Ниже мои фрагменты.
url.py
url(r'^clients/$', views.client_list, name='client_list'),
models.py
class Client(models.Model):
name = models.CharField(max_length=50, verbose_name="Name")
surname = models.CharField(max_length=50, verbose_name="Surname")
activity = models.IntegerField(choices=ACTIVITY_OPTIONS, null=True,default=ACTIVE)
views.py
def client_list(request, template_name='clients/client_list.html'):
if request.method == 'POST':
search_string = request.POST['search_client']
current_client=Client.objects.filter(Q(activity=1) & Q(name=search_string)| Q(surname=search_string))
single_table=ClientTable(current_client)
RequestConfig(request).configure(single_table)
return render(request,template_name, {'single_table': single_table})
else:
clients=Client.objects.filter(activity=1)
table = ClientTable(clients)
RequestConfig(request).configure(table)
return render(request,template_name, {'table': table})
tables.py
class ClientTable(tables.Table):
class Meta:
#define the model
model = Client
exclude=('..')
template_name = 'django_tables2/bootstrap.html'
sequence = ("surname", "name",)
template
{% extends 'base.html' %}
{% load has_group %}
{% load render_table from django_tables2 %}
{% load bootstrap3 %}
{% load static %}
{% load staticfiles %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-12">
<form class="well" method="post" action="">
{% csrf_token %}
Client Search:<br>
<input type="text" class="form-control" id="search" name="search_client">
<br>
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "like" %} Submit
</button>
{% endbuttons %}
</form>
{% if single_table %}
{% render_table single_table %}
{% endif %}
{% if table %}
{% render_table table %}
{% endif %}
</div>
</div>
</div>
{% endblock %}