2015-05-13 3 views
1

Я хотел добавить функциональность «поиска» к моей модели, но [querystring][1], похоже, не работает, как я ожидал. Вот моя попытка:Добавление «поиска» при сохранении разбивки на страницы и сортировке?

from django.db import models 

class ProductsByOneDayMax(models.Model): 
    product = models.TextField(max_length=65535, verbose_name="Product name") 
    max = models.IntegerField(verbose_name="Max daily IPs") 

    class Meta: 
     db_table = 'precomputed_product_distinct_ip_one_day_max' 

from django.db import connection as conn 
from django.shortcuts import render 
from viewer.models import ProductsByOneDayMax 
import django_tables2 as tables 

def list_products(request): 
    class ProductsByOneDayMaxTable(tables.Table): 
     class Meta: 
      model = ProductsByOneDayMax 
      exclude = ('id',) 
    search = request.GET.get('search', '') 
    objects = ProductsByOneDayMax.objects.filter(product__icontains=search) 
    table = ProductsByOneDayMaxTable(objects) 
    table.order_by = "-max" 
    tables.RequestConfig(request).configure(table) 
    return render(request, "plain_table.html", {'table': table, 
               'title': 'Product list', 
               'search': search}) 

И вид:

{% extends "base.html" %} 
{% block content %} 
{% load django_tables2 %} 
{% querystring "search"=search %} 
<form class="form-inline" method="get" role="form"> 
     <div class="input-group"> 
      <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span> 
      <input type="text" class="form-control " value="" placeholder="Search..." name="search"> 
     </div> 

     <button type="submit" class="btn btn-primary">Search</button> 
</form> 
{% render_table table %} 
{% endblock %} 

Вместо добавления в поле «поиск» в строку запроса, это только добавляется к выходу. Что я делаю не так?

В случае, если это уместно, я использую bootstrap-tables2.css.

+0

Я использовал [DataTables] (https://www.datatables.net/examples/data_sources/server_side.html) с представлением Django. Существует много плагинов, которые объединяют Django с Datatables. – MikeVelazco

ответ

1

Похоже, это была решена в последнем GitHub комментарий для связанного шаблона:

bootstrap_pagination тег нужен полный URL для того, чтобы должным образом сортировки столбцов между страницами:

{% bootstrap_pagination table.page url=request.get_full_path %} 

Этот предполагает, что вы "django.core.context_processors.request" в settings.TEMPLATE_CONTEXT_PROCESSORS

Изменение шаблона решило проблему.