Also mache ich eine Spesenabrechnung Django App und ich bin stecken, versuchen, die Summe aller eingegebenen Ausgaben zu rendern.Aufruf benutzerdefinierter Manager-Funktion in Django-Vorlagen
Ich habe einen benutzerdefinierten Manager erstellt die Summe zu berechnen:
class ExpenseManager(models.Manager):
def price_sum(self):
return super(ExpenseManager, self).aggregate(total_price = Sum('price'))['total_price']
Und es zu meiner Modell:
class Expense(models.Model):
...
objects = models.Manager()
price_object = ExpenseManager()
...
Ich weiß, dass mein Manager funktioniert, weil, wenn ich es in der Shell ausführen Ich bekomme die korrekte Summe meiner Ausgaben - dh ich gebe Expense.price_object.price_sum()
ein und ich bekomme Decimal('254.77')
zurück - aber wenn ich versuche, das in meine Vorlage zu bekommen, erscheint es einfach leer.
Ich habe versucht, in meiner Variable verschiedene Möglichkeiten, um ein paar setzen, aber nichts davon hat funktioniert, zum Beispiel:
{{price_object.price_sum}}
oder
{{expense.price_object.price_sum}}
oder ich verzweifelt bekommen ...
{% for p in expense.price_object %} {{p.price_sum}} {% endfor %}
oder
{% for p in expense.price_object.price_sum %} {{p}} {% endfor %}
aber ja ... nichts erscheint immer wenn ich die Seite lade. Kann jemand helfen?
Wie haben Sie es in der Vorlage aufgerufen? – sha256
@ sha256, Wie in Daniel Rosemans Antwort müssen Sie nur ein Model-Klassenobjekt an die Vorlage übergeben. – dragoon
+1 zu beiden anwsers. hilfreich – sha256