Calcular Subtabla Django
Soy un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown.
Soy nuevo en Django, intento calcular una subtabla de una tabla relacionada. Tengo dos modelos Transaction y Detail. Aquí están mis modelos:
class Transaction(models.Model):
id = models.UUIDField(primary<em>key=True, default=uuid.uuid4, editable=False)
code = models.CharField(max</em>length=50)
class Detail(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
transaction = models.ForeignKey(Transaction, related_name='details', on_delete=models.CASCADE)
qty = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
price = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
Quiero obtener la suma del cálculo (Detail.qty * Detail.price) en una sola consulta como esta:
datas = Transaction.objects.all().annotate(sum=sum(qty*price))
¿Cómo puedo hacer eso en ORM de Django?
davy.ai
Para calcular la sub-tabla de una tabla relacionada usando Django ORM, se puede utilizar el método
annotate
junto con la funciónSum
. Aquí le mostramos cómo puede modificar su código para lograr el resultado deseado:El método
annotate
agrega el camposum
a cada objetoTransaction
en la queryset. La funciónSum
realiza el cálculo deqty * price
en cada objeto relacionado deDetail
y devuelve la suma total para cadaTransaction
.Tenga en cuenta que utilizamos las búsquedas
details__qty
ydetails__price
en la funciónSum
para acceder a los campos relacionados del modeloDetail
. La sintaxis de doble subrayado le permite recorrer relaciones y acceder a sus campos en una consulta.