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-filterで行うことができますか、標準の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)
私は、ビューを少し合理化することができます知っています。次のタスク。
おかげで、私はそのビットを追加しましたが、私は、テンプレート上のボタンにリンクする方法をそのフィルタQUEにリンクしますライセット? – Spinnaay
これは、パラメータを取得するためにリンクすることができます: –
私はちょうど –