es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

multiplicación en django en django

¿Cómo puedo multiplicar dos números en un modelo de presupuesto? Por ejemplo, quiero multiplicar las horas de trabajo y la tarifa por hora… Luego, quiero sumar esa cifra al costo total de todo… Por favor, ayúdame.

from django.db import models
from django.contrib.auth.models import User
from .directors import Directors

class ApprovedBudget(models.Model):
  job=models.CharField(max_length=255)
  time=models.DateTimeField()
  labourhours=models.IntegerField()
  rate=models.DecimalField(max_digits=9, decimal_places=2)
  materials=models.DecimalField(max_digits=9, decimal_places=2)
  travel=models.DecimalField(max_digits=9, decimal_places=2)
  other=models.DecimalField(max_digits=9, decimal_places=2)
  notes=models.CharField(max_length=450)
  budget=models.DecimalField(max_digits=9, decimal_places=2)
  actual=models.DecimalField(max_digits=9, decimal_places=2)
  undercover=models.DecimalField(max_digits=9, decimal_places=2)
  status = models.CharField(max_length=12,default='pending')
  #pendiente, aprobado, rechazado, cancelado
  is_approved = models.BooleanField(default=False)
  #oculto
  updated = models.DateTimeField(auto_now=True, auto_now_add=False)
  created = models.DateTimeField(auto_now=False, auto_now_add=True)

  objects = Directors()

  class Meta:
    verbose_name = ('ApprovedBudget')
    verbose_name_plural = ('ApprovedBudget')

  def __str__(self):
    return str(self.job)

  @property
  def labour(self):
    if(self.labourhours != None ):
      labour=self.labourhours*self.rate
      return labour
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para multiplicar las horas de trabajo y la tarifa por hora en el modelo presupuestario, puedes usar el decorador @property para crear un campo calculado llamado labour. Esto multiplicará las variables labourhours y rate, y devolverá el resultado como labour.
    Aquí tienes un ejemplo de fragmento de código:

    @property
    def labour(self):
        if self.labourhours is not None:
            labour = self.labourhours * self.rate
            return labour
    

    Para añadir el labour al costo total, puedes modificar el campo budget en el método save. Aquí tienes un ejemplo de fragmento de código:

    def save(self, *args, **kwargs):
        self.budget = self.materials + self.travel + self.other + self.labour   # Actualizar presupuesto
        super(ApprovedBudget, self).save(*args, **kwargs)  # Llamar al método save de la clase padre
    

    Este código actualizará el campo budget cada vez que se guarde un objeto ApprovedBudget, sumando los campos materials, travel, other y labour.

Comments are closed.