【发布时间】:2016-12-28 05:04:06
【问题描述】:
我在设置默认字段值时遇到问题。我想做什么?
我希望 Packages 类中的价格是 Bill 类中 priceNoTax 的默认值。如您所见,所有三个类都是
逻辑连接。
示例:帐户 1 有一个 id 为 1 的包。此包的价格为 100。帐户 1 的 priceNoTax 默认值为 100。
如何做到这一点?我对此比较陌生,所以我需要帮助。
models.py
class Packages(models.Model):
#other fields
price = models.IntegerField(validators=[MinValueValidator(1)], verbose_name="Price of package")
class Account(models.Model):
startDate = models.DateField(verbose_name="Start date")
finishDate = models.DateField(verbose_name="Finish date")
idPackage = models.ForeignKey(Packages, on_delete=models.CASCADE, verbose_name="Package")
class Bill(models.Model):
date = models.DateField(default=datetime.now())
tax = models.FloatField(default=0.20)
priceNoTax = models.IntegerField()
priceTax = models.FloatField(default=priceNoTax+(priceNoTax*tax))
idAccount = models.ForeignKey(Account, on_delete=models.CASCADE, verbose_name="Account")
def __str__(self):
return self.date
非常感谢!!!
【问题讨论】:
-
如何将信息输入模型?您是在使用管理页面还是从其他位置传递它?我可以想到几种方法来做到这一点,但没有一种专门将默认属性设置为另一个模型的值。
-
我不需要
priceNoTax和priceTax字段,因为它们逻辑上已经连接。如果您想以Bill.objects.filter(idAccount__idPackage__price)访问价格,您可以从Bill类中查询。减少重复变量。
标签: python django default-value