我有一个叫做Actual的模型:
# Actual parts table
class Actual(models.Model):
vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE, verbose_name="Vendor name", related_name="actualvendor")
number = models.CharField("External part number", max_length=32, unique=True, blank=True, null=True)
description = models.CharField(max_length=64, blank=True)
pq = models.DecimalField(max_digits=7, decimal_places=2, default=1)
mrrp = models.DecimalField(max_digits=10, decimal_places=2)
# Model metadata
class Meta:
unique_together = ["vendor", "number"]
verbose_name_plural = "actual external parts"
# Display below in admin
def __str__(self):
return f"{self.number}"
我还有另一个模型叫Offer:
class Offer(models.Model):
sync_id = models.ForeignKey(Sync, on_delete=models.CASCADE, verbose_name="Internal part number", related_name="part")
discount = models.DecimalField(max_digits=3, decimal_places=2, default=0)
moq = models.DecimalField(max_digits=4, decimal_places=2, default=1)
status = models.CharField(max_length=20, choices=OFFERSTATUS_CHOICES, default=1)
actual = models.OneToOneField(Actual, on_delete=models.CASCADE)
# Display something in admin
def __str__(self):
return f"Offer {self.id} for {self.sync_id}"
# Calculate the price
def price(self):
return self.actual.mrrp * (1-self.discount)
我试图用“mrrp”计算“报价”模型中的“价格”,但“mrrp”来自“实际”模型。
我可以用我附加的代码来实现,但正如你在django管理中看到的,'actual'显示为一个字段。我不希望它显示为字段。我只是希望'actual'是一个等于'mrrp'值的变量。这样我就可以用它来计算价格了。
是否有其他方法引用其他模型中的字段?田地不是唯一的办法吧?
1条答案
按热度按时间nwwlzxa71#
我和一个房地产设计师解决了这个问题。我的想法是正确的,但没有在计算价格的函数上放置属性装饰器。使用属性装饰器来显示数据,就像你在Django中显示字段一样。
我在模型的底部添加了以下内容: