Ich versuche, einige Datensätze (über Zeitschriften) aus der Datenbank zu extrahieren, um Tabelle mit Statistiken zu erstellen. Die Extraktion erfolgt nach Zeitraum und Name des Magazins. Hier ist der Code, den ich zur Zeit, aber ich nehme an, es nicht trocken genug ist, um aus zwei Gründen:Django. ORM-Filter nach Funktion Schlüsselwort Argument
def get_statistic(date__gte=None, date__lte=None, name=None):
magazines_qs = Magazines.objects.all()
#1 move filters to "for"
#2 get rid of "if" statement (may be by setting default values which
# makes filter equal to .all() method)
if date__gte:
magazines_qs = magazines_qs.filter(date__gte=date__gte)
if date__lte:
magazines_qs = magazines_qs.filter(date__lte=date__lte)
if offer:
magazines_qs = magazines_qs.filter(name=name)
Ich nehme an, es möglich ist, etwas zu erhalten wie:
def get_statistic(date__gte=None, date__lte=None, name=None):
magazines_qs = Magazines.objects.all()
for filter in arguments()
magazines_qs = magazines_qs.filter(filter)
Aber ich nicht Fachwissen.