Robię aplikację Django z arkuszem wydatków i utknąłem, próbując renderować sumę wszystkich wprowadzonych wydatków.Wywołanie funkcji menedżera niestandardowego w szablonach django
I utworzeniu niestandardowego menedżera obliczyć sumę:
class ExpenseManager(models.Manager):
def price_sum(self):
return super(ExpenseManager, self).aggregate(total_price = Sum('price'))['total_price']
I dodaje go do mojego modelu
class Expense(models.Model):
...
objects = models.Manager()
price_object = ExpenseManager()
...
wiem, że mój kierownik działa, ponieważ kiedy go wykonać w powłoce Dostaję poprawną sumę moich wydatków - tj. Wstawiam Expense.price_object.price_sum()
i otrzymuję zwrot Decimal('254.77')
- ale kiedy próbuję wprowadzić to do mojego szablonu, po prostu pokazuje się puste.
Próbowałem oddanie w moim zmiennej kilka różnych sposobów, ale żaden z nich pracował, na przykład:
{{price_object.price_sum}}
lub
{{expense.price_object.price_sum}}
albo ja zdesperowany ...
lub
{% for p in expense.price_object.price_sum %} {{p}} {% endfor %}
ale tak ... nic nie pojawia się po załadowaniu strony. Czy ktoś może pomóc?
jak nazwałeś to w szablonie? – sha256
@ sha256, Podobnie jak w odpowiedzi Daniela Rosemana, wystarczy przekazać obiekt klasy Model do szablonu. – dragoon
+1 do obu anwsers. pomocna – sha256