1
我正在使用django-filter
來搜索模型。下面是代碼:Django過濾器:動態創建搜索或隱藏查詢集的查詢集直到搜索
filters.py:
class PersonFilter(django_filters.FilterSet):
lastName = django_filters.CharFilter(lookup_expr='icontains')
firstName = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Person
fields = ['lastName', 'firstName']
views.py:
def search(request):
people = Person.objects.all()
people = PersonFilter(request.GET, queryset=people)
context = {'filter': people}
return render(request, 'myapp/template.html', context)
template.html:
<form method="get">
{{ filter.form.as_p }}
<button type="submit">Search</button>
</form>
<table>
{% for field in filter.qs %}
<tr>
<td>
{{ field.idno }}
</td>
<td>
{{ field.lastName }}
</td>
<td>
{{ field.firstName }}
</td>
<td>
{{ field.status }}
</td>
</tr>
{% endfor %}
</table>
{% endblock %}
</body>
</html>
眼下,這導致表用名字和姓氏的搜索框來鏡像我的模型。搜索完美無缺。
如何防止最初顯示數據表?從邏輯上講,這可以通過表面(隱藏)完成,或者更好的是,實質上(動態創建queryset)。這可能嗎?