Necesito obtener valores de los campos del modelo, multiplicar y mostrar el producto en la plantilla.
Por ejemplo, tengo este código:
modelos.py
class Product(models.Model): field1 = models.IntegerField() field2 = models.IntegerField() def multiply(self): return self.field1 * self.field2vistas.py
def home(request): products = Product.objects.all() #something goes here? context = { 'products': products } return render(request, 'home.html', context)modelo
{% for product in products %} {{ product.field1 }} {{ product.field2 }} here goes the value of field1/field2 {{ }} {% endfor %}¿Cómo es mejor lograr esto?
Puede agregar un método en el modelo:
def divided_fields(self): return self.field1 / self.field2Y luego im plantilla:
{{ product.divided_fields }}Otra posibilidad sería crear una etiqueta o filtro de plantilla personalizada que maneje la división, ya que no hay una etiqueta o filtro predeterminado para tales operaciones.
Puede usar django-mathfilters para esto.
{% load mathfilters %} ... <h1>Basic math filters</h1> <ul> <li>8 + 3 = {{ 8|add:3 }}</li> <li>13 - 17 = {{ 13|sub:17 }}</li> {% with answer=42 %} <li>42 * 0.5 = {{ answer|mul:0.5 }}</li> {% endwith %} {% with numerator=12 denominator=3 %} <li>12 / 3 = {{ numerator|div:denominator }}</li> {% endwith %} <li>|-13| = {{ -13|abs }}</li> </ul>