2017-06-26 65 views
1

好吧,Python的Django的 - Django的過濾器應用 - 基於模型自動生成searchfield

我第一次問一個問題在這裏,我沒有尋找類似的問題,但還沒有找到我的答案了..

我正在與Django一起交付一個簡單的應用程序,它顯示了客戶入住和退房概覽以及交付的一些詳細信息。

我有一個名爲「CheckInsListView」和「CheckOutListView」的視圖,我想根據django-filters應用程序在給定日期的用戶上過濾這些列表。

我嘗試以下鏈接:https://simpleisbetterthancomplex.com/tutorial/2016/11/28/how-to-filter-querysets-dynamically.html

現在的問題是,是不會自動創建searchform。它確實顯示了提交按鈕,但不生成表單字段。它也沒有出現任何錯誤。

有人可以指出我在這裏失蹤了什麼嗎?

由於提前,

凱文

#filters.py 
    from .models import Delivery 
    import django_filters 

    class DeliveryFilter(django_filters.FilterSet): 

    class Meta: 
     model = Delivery 
     fields = ['arrival_date'] 

添加視圖:

#views.py 
""" 
Create a search view to sort deliveries on date, django-filter app is used 
""" 

from django.shortcuts import render 
from .models import Delivery 
from .filters import DeliveryFilter 

def search(request): 
    delivery_list = Delivery.objects.all() 
    delivery_filter = DeliveryFilter(request.GET, queryset=delivery_list) 
    return render(request, 'all_deliveries.html', {'filter': delivery_filter}) 

和URL

#urls.py 
from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^search/$', views.search, name='search'), 
] 

的形式在HTML

{% extends "framework.html" %} 

{% block content %} 

<div class="form_search_header"> 
     <form method="get"> 
      {{ filter.form.as_p }} 
      <button type="submit">Search</button> 
     </form> 
</div> 

{% endblock %} 
+0

我想你忘了在表單中添加'{%csrf_token%}' –

+0

我不認爲我需要的CSRF令牌,CSRF令牌與method =「post」一起使用... –

回答

0
delivery_filter = DeliveryFilter(request.GET, queryset=delivery_list) 

這是仍然要返回篩選的記錄。在那裏,你需要寫在模板中for循環,類似如下:

<option value="" disabled selected>Select Delivery Item</option> 
{% for d in filter %} 
<option value="{{ d.id }}">{{ d.arrival_date }}</option> 
{% endfor %}