Ich verwende Django-Filter auf sehr standardmäßige Weise.Django Filter Buttons
class TaksFilter(django_filters.FilterSet):
class Meta:
model = Task
fields = ['lastUpdated']
Aber ich möchte benutzerdefinierte Quick-Filter-Schaltflächen erstellen. Wie die letzten 1 Tage und die letzten 7 Tage, die diese Abfrage im Wesentlichen ausführen.
task = Task.objects.filter(lastUpdated__range=["2016-12-09", "2016-12-10"])
ist etwas, das mit django-Filter durchgeführt werden kann oder muss ich einen Standard-POST erstellen oder Antwort erhalten?
Dank Ivo Donchev für die Hilfe gelöst. Mit Ihrem Code habe ich es so gelöst. Ich wollte nicht die Route von Klassen basierten Ansichten gehen, wie ich Funktionen verwende.
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)
Ich weiß, dass ich ein wenig die Sicht rationalisieren können. Nächste Aufgabe
Danke, habe ich, dass etwas hinzugefügt, aber wie würde ich es auf eine Schaltfläche auf der Vorlage verlinken auf diesen Filter que verlinken ry eingestellt? – Spinnaay
Nun können Sie es als get Parameter verwenden: –
Ich habe gerade den Beitrag –