J'utilise django-filter
pour rechercher un modèle. Voici le code:Django-Filter: Créer dynamiquement un jeu de requête à la recherche ou masquer le jeu de requête jusqu'à la recherche
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>
En ce moment, il en résulte une table cela reflète mon modèle avec des boîtes de recherche pour le prénom et le nom de famille. La recherche fonctionne parfaitement.
Comment puis-je empêcher le tableau de données d'apparaître initialement? Logiquement, cela pourrait être fait superficiellement (hide) ou, mieux encore, substantiellement (créer un queryset dynamiquement). Est-ce possible?