0
我以非常標準的方式使用Django篩選器。Django篩選器按鈕
class TaksFilter(django_filters.FilterSet):
class Meta:
model = Task
fields = ['lastUpdated']
但我想創建自定義快速過濾器按鈕。就像上個1天和最後7天一樣,它本質上運行了這個查詢集。
task = Task.objects.filter(lastUpdated__range=["2016-12-09", "2016-12-10"])
這是可以用Django的過濾器或我需要創建一個標準的POST或GET響應?
解決
感謝伊沃Donchev的幫助。使用你的代碼,我解決了這個問題。因爲我正在使用函數,所以我不想沿着基於類的視圖的路線走。
form.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
view.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)
我知道我可以精簡視圖一點。下一個任務。
class TaksFilter(django_filters.FilterSet):
last_updated = django_filters.MethodFilter()
class Meta:
model = Task
def filter_last_updated(self, queryset, value):
qs = queryset.filter(...)
# your custom logic here using the passed value
return qs
在模板標籤:
謝謝,我添加了一點,但我會如何將其鏈接到一個按鈕模板鏈接回該過濾器闕你定了嗎? – Spinnaay
那麼你可以使用鏈接它作爲獲取參數: –
我剛剛編輯帖子 –