Si puedes llamar al método set_valor_inv dentro del template. Pero sinceramente no lo haría.
Primero vamos a revisar tu método.
Código Python:
Ver originaldef set_valor_inv(self):
self.valor_inv = self.existencia * self.precio_venta
self.save()
Primero calculas y asignas a valor_inv, excelente hasta aquí todo bien. De hecho aqui deberia de terminar el método, pero después guardas, eso significa hacer un query a la base de datos para guardar y segundo le estas asignando funcionalidad extra que no debería de ir ahí.
Hay un montón de maneras de hacer esto:
Primer manera:
Hacer un override del método save en tu modelo para que calcule el campo valor_inv antes de guardarlo.
Este comportamiento seria global y no abría forma de alterar valor_inv sin ir directo a la base de datos o cambiar los valores de existencia o precio_venta. Incluso en el admin este comportamiento seguiría igual.
Segunda manera:
Hacer un override del método save en cada uno de los formularios que vaya a modificar una instancia de tu modelo.
Lo malo es que lo vas a tener que reescribir eso por un montón de partes o crear algún mixin o hacer algo por el estilo. Pero tal vez haya formularios donde quieras modificar valor_inv con algún valor que tu le des. Incluso tendrías que añadir esto para el admin.
Tercera manera:
Usar signals, básicamente sería lo mismo que la segunda manera pero con signals en lugar de hacer el override.
Cuarta manera:
Tal vez el campo no te interesa tenerlo guardado, ya que siempre lo puedes calcular a través de existencia y precio_venta, no necesitas filtrar por ese campo, ordenar por ese campo. Solo te interesa mostrarlo y ya. En ese caso es mejor un campo calculado. Solo defines tu método y lo muestras en la plantilla.
Código Python:
Ver original@property
def valor_inv(self):
return self.existencia * self.precio_venta
Quita manera:
Crear un middleware, que al pasar por el process_response, analice el response y veo si necesita efectuar algún cambio en las instancias que creaste.
En fin existen un montón de soluciones, cada de ellas con sus pros y sus contras.