我用一种非常标准的方式使用Django过滤器。在
class TaksFilter(django_filters.FilterSet):
class Meta:
model = Task
fields = ['lastUpdated']
但我想创建自定义快速过滤按钮。就像最后1天和最后7天,它们基本上运行这个查询集。在
^{pr2}$这是可以用django过滤器完成的吗?还是需要创建一个标准的POST或GET响应?在
已解决
谢谢伊沃·唐切夫的帮助。用你的代码我就这样解决了。我不想走基于类的视图的路线,因为我在使用函数。在
在表单.py在
class TaskFilter(django_filters.FilterSet):
last_updated = django_filters.MethodFilter()
class Meta:
model = Task
fields = ['lastUpdated']
def filter_last_updated(self, value, queryset):
qs = queryset.filter(lastUpdated__gte=datetime.now()-timedelta(days=value))
return qs
在视图.py在
def tasks(request):
tasks = TaskFilter(request.GET, queryset=Task.objects.all())
if request.method == "GET":
if '1' in request.GET:
value = 1
tasks = TaskFilter(request.GET, queryset=(TaskFilter.filter_last_updated(tasks, value, queryset=(Task.objects.all()))))
context = {
'tasks':tasks,
}
return render(request, 'tasks.html', context)
我知道我可以简化一下视图。下一个任务。在
是的,你可以用django过滤器,使用MethodFilter并实现名为filter的方法,你的文件名如下:
在模板中的标记中: “href='your'-网址:url.com?上次更新=某个值'”
在视图中:
^{pr2}$相关问题 更多 >
编程相关推荐