我正在编写我的第一个django应用程序,在我的一个ListView中将会有成百上千条记录。我希望用户能够过滤结果。管理控制台中的filter小部件对于任何类型的用户看起来都很直观。但问题是,我不确定如何才能让它们出现在我的列表视图中。
我简要地研究了django-filters。但是,我不确定它是否可以帮助我实现类似的功能。
发布于 2018-12-19 15:06:13
我认为你可以这样尝试:
在列表视图的模板中:
<form path="{% url 'your_list_view' %}" method="GET">
<label for="search">Search: </label>
<input type="text" name="search">
<input type="submit" value="OK">
</form>现在在ListView中使用以下代码:
from django.db.models import Q
class YourListView(ListView):
search_fields = ['name', 'something_else']
...
def get_querset(self, *args, **kwargs):
queryset = super(YourListView, self).get_queryset(*args, **kwargs)
search = request.GET.get('search')
if search:
query = list()
for f in self.search_fields:
query.append(Q(**{f: search}))
return queryset.filter(*query)
return querysethttps://stackoverflow.com/questions/53843138
复制相似问题