好的,
我第一次在这里问一个问题,我确实搜索了类似的问题,但还没有找到答案..
我正在使用Django开发一个简单的交付应用程序,它显示了客户签入和退出的概述以及交付的一些细节。
我有一个名为" CheckInsListView"和" CheckOutListView"我想基于django-filters app在用户指定的日期过滤这些列表。
我尝试点击此链接:https://simpleisbetterthancomplex.com/tutorial/2016/11/28/how-to-filter-querysets-dynamically.html
现在的问题是,搜索表单不会自动创建。它确实显示了提交按钮,但尚未生成表单域。它也没有出现任何错误。
有人能指出我在这里失踪的东西吗?
提前致谢,
凯文
#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})
和网址
#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 :(得分: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 %}