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)。这可能吗?