如何在 Django 中基于外键进行乘法运算
How to do a multiplication based on a ForeignKey in django
大家好,我在 Django 中有这 2 个模型,您是否看到我重写了 save()
方法,因为我希望属性 valor_a_receber
基于外键值的基本乘法
这是我的源代码:
from django.db import models
from accounts.models import Vendedor
class Comissao(models.Model):
porcentagem = models.FloatField()
def __str__(self):
return str(self.porcentagem)
class Venda(models.Model):
vendedor = models.ForeignKey(Vendedor, on_delete=models.DO_NOTHING)
comissao_venda = models.ForeignKey(Comissao, null=True, on_delete=models.DO_NOTHING)
data_venda = models.DateField(auto_now_add=True)
valor_venda = models.FloatField()
descricao_venda = models.CharField(max_length=60)
valor_a_receber = models.FloatField(blank=True, null=True)
def save(self, *args, **kwargs):
self.valor_a_receber = (self.comissao_venda * self.valor_venda)
super().save(*args, **kwargs)
def __str__(self):
return str(self.vendedor)
感谢任何帮助!
你应该乘以 comissao_vendra
的 porcentagem
:
self.valor_a_receber = self.comissao_venda<b>.porcentagem</b> * self.valor_venda
但在 save
方法中实现它可能 不是 一个好主意。这些可以被规避,例如在 QuerySet
上执行 .update(…)
[Django-doc] 时。将 valor_a_receber
定义为 属性 可能会更好:
class Venda(models.Model):
vendedor = models.ForeignKey(Vendedor, on_delete=models.DO_NOTHING)
comissao_venda = models.ForeignKey(Comissao, null=True, on_delete=models.DO_NOTHING)
data_venda = models.DateField(auto_now_add=True)
valor_venda = models.FloatField()
descricao_venda = models.CharField(max_length=60)
# ↓ not a field
@property
def valor_a_receber(self):
return self.comissao_venda.porcentagem * self.valor_venda
# no override of save
大家好,我在 Django 中有这 2 个模型,您是否看到我重写了 save()
方法,因为我希望属性 valor_a_receber
基于外键值的基本乘法
这是我的源代码:
from django.db import models
from accounts.models import Vendedor
class Comissao(models.Model):
porcentagem = models.FloatField()
def __str__(self):
return str(self.porcentagem)
class Venda(models.Model):
vendedor = models.ForeignKey(Vendedor, on_delete=models.DO_NOTHING)
comissao_venda = models.ForeignKey(Comissao, null=True, on_delete=models.DO_NOTHING)
data_venda = models.DateField(auto_now_add=True)
valor_venda = models.FloatField()
descricao_venda = models.CharField(max_length=60)
valor_a_receber = models.FloatField(blank=True, null=True)
def save(self, *args, **kwargs):
self.valor_a_receber = (self.comissao_venda * self.valor_venda)
super().save(*args, **kwargs)
def __str__(self):
return str(self.vendedor)
感谢任何帮助!
你应该乘以 comissao_vendra
的 porcentagem
:
self.valor_a_receber = self.comissao_venda<b>.porcentagem</b> * self.valor_venda
但在 save
方法中实现它可能 不是 一个好主意。这些可以被规避,例如在 QuerySet
上执行 .update(…)
[Django-doc] 时。将 valor_a_receber
定义为 属性 可能会更好:
class Venda(models.Model):
vendedor = models.ForeignKey(Vendedor, on_delete=models.DO_NOTHING)
comissao_venda = models.ForeignKey(Comissao, null=True, on_delete=models.DO_NOTHING)
data_venda = models.DateField(auto_now_add=True)
valor_venda = models.FloatField()
descricao_venda = models.CharField(max_length=60)
# ↓ not a field
@property
def valor_a_receber(self):
return self.comissao_venda.porcentagem * self.valor_venda
# no override of save