Как запустить функцию модели с помощью DTL?

Я довольно новичок в django и пытаюсь сделать следующее:

Я делаю веб-приложение для заказа еды для близлежащего бизнеса. Я пытаюсь добавить все калории в блюдо.

У меня есть модель "Consumable", которая представляет собой различные продукты питания и напитки. Вот код для модели "Consumable":

class Consumable(models.Model):
    name = models.CharField(max_length=80, unique=True)
    category = models.ForeignKey(FoodCategory, null=True, on_delete=models.SET_NULL)
    price= models.FloatField(default=0.00)
    calories = models.IntegerField(blank=False)
    image = models.ImageField(upload_to="images/Food/")
    description = RichTextField(blank=True, max_length=500)
    restaurant = models.ForeignKey(Place, on_delete=models.CASCADE)
    added = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

Затем, у меня есть модель под названием "Meal", которая имеет следующий код:

class Meal(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='images/photos/meals')
    consumables = models.ManyToManyField(Consumable, related_name="consumable")
    restaurant = models.ForeignKey(Place, on_delete=models.CASCADE)
    price = models.FloatField()
    
    
    def add_cals(meal_consumables):
        total_calories = 0
        for x in meal_consumables.values():
            global total_calories += float(x.calories)  
        return total_calories
    

Я пытаюсь вызвать функцию этой модели, add_cals из моего HTML файла, используя DTL (Django Template Language).

Например, если у вас есть модель, хранящаяся с переменной x в вашем представлении, и она находится в контекстном словаре представления, вы можете просто вызвать модель, используя, например, <p>{{x}}</p>. А если у модели есть переменная x1, вы могли бы вызвать ее как <p>{{x.x1}}</p>, и это прекрасно работает. Однако, если модель x из моего примера имеет функцию

add_x(x):
    return x  

тогда это почему-то не будет работать, когда вы называете это как <p>{{x.add_x(1)}}</p>. Может ли какой-нибудь мудрый человек в этом мире быть настолько скромным, чтобы поделиться своими знаниями со мной, чтобы помочь мне?

Спасибо всем, кто пробует.

Вернуться на верх