2017-01-19 2 views
0

У меня есть простая модель Django и поиск Q, и все работает так, как ожидалось, но я хотел бы, чтобы результаты фильтрации отображались в отдельном DIV, сохраняя исходный список запросов без фильтрации в аннотации в прикрепленное изображение. Ниже приведен мой код, аннотированный снимок экрана и ссылка на страницу на dev-сервере. Любая инструкция будет отличной. Спасибо.Django Q Отфильтрованные результаты в отдельном DIV

Посмотреть

def plaque_list(request): 
    today = timezone.now().date() 
    queryset_list = Plaque.objects.active().order_by("first_name") 
    if request.user.is_staff or request.user.is_superuser: 
     queryset_list = Plaque.objects.all().order_by("first_name") 

    query = request.GET.get("q") 
    if query: 
     queryset_list = queryset_list.filter(
      Q(first_name__contains=query) | 
      Q(last_name__icontains=query) 
     ).distinct() 
    paginator = Paginator(queryset_list, 8) # Show 25 contacts per page 
    page_request_var = "page" 
    page = request.GET.get(page_request_var) 
    try: 
     queryset = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     queryset = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     queryset = paginator.page(paginator.num_pages) 

    context = { 
     "object_list": queryset, 
     "queryset_list": queryset_list, 
     "title": "Locate a Veteran", 
     "page_request_var": page_request_var, 
     "today": today, 
    } 
    return render(request, "plaques/plaque_list.html", context) 

Шаблон

... 
{% for obj in object_list %} 
    <tr> 
    <th><a href="{{ obj.get_absolute_url }}">{{ obj.first_name }}</a></th> 
    <th><a href="{{ obj.get_absolute_url }}">{{ obj.last_name }}</a></th> 
    <th>{{ obj.branch }}</th> 
    <th>{{ obj.rank }}</th> 
    <th>{{ obj.wall|upper }}</th> 
    <th>{{ obj.direction|title }}</th> 
    <th>{{ obj.row }}</th> 
    <th>{{ obj.plaque_num }}</th> 
    </tr> 
    ... 
{% endfor %} 

enter image description here

Dev Сервер Ссылка http://www.new.soledadmemorial.com/plaques/

+1

Почему бы не создать отдельный qs для фильтрации результатов и передать их в контекст шаблона? – devxplorer

ответ

1

Следуя предложению devxplorer, просто добавьте второй запрос в свой контекстный словарь и используйте его для отображения вашего специального div.

def plaque_list(request): 
    today = timezone.now().date() 
    queryset_list = Plaque.objects.active().order_by("first_name") 
    if request.user.is_staff or request.user.is_superuser: 
     queryset_list = Plaque.objects.all().order_by("first_name") 

    query = request.GET.get("q") 
    filtered_results = None 
    if query: 
     filtered_results = queryset_list.filter(
      Q(first_name__contains=query) | 
      Q(last_name__icontains=query) 
     ).distinct() 
    paginator = Paginator(queryset_list, 8) # Show 25 contacts per page 
    page_request_var = "page" 
    page = request.GET.get(page_request_var) 
    try: 
     queryset = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     queryset = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     queryset = paginator.page(paginator.num_pages) 

    context = { 
     "object_list": queryset, 
     "queryset_list": queryset_list, 
     'filtered_results': filtered_results, 
     "title": "Locate a Veteran", 
     "page_request_var": page_request_var, 
     "today": today, 
    } 
    return render(request, "plaques/plaque_list.html", context) 

И тогда вы можете перебрать filtered_results, но вы хотели бы, чтобы этот специальный div.

Смежные вопросы