[英]accessing field value inside the model in Django
class 產品(型號.型號):
Code = models.CharField(max_length=10,primary_key=True)
Product_description = models.CharField(max_length=200)
Val_tech = models.CharField(max_length=5)
Quantity = models.IntegerField()
UOM = models.CharField(max_length=5)
Rate = models.FloatField()
Value = models.FloatField()
def __str__(self):
return self.Product_description
class TableToRefer(models.Model):
Item = models.ForeignKey('Products.Product_description',primary_key=True,on_delete=models.CASCADE)
Qty = models.ForeignKey('Products.Quantity',null=True,default=0,on_delete=models.CASCADE)
Rate = models.ForeignKey('Products.Rate',null=True,default=0,on_delete=models.CASCADE)
price = models.FloatField(null=True,default = Rate*1.20)
我想訪問 Rate 字段的值並在 price 字段中使用它並自動在其中添加計算出的價格。 我該怎么做?
如果您的價格已設置,您可以檢查您的保存方法。 如果沒有,價格將自動計算
class TableToRefer(models.Model):
Item = models.ForeignKey('Products.Product_description',primary_key=True,on_delete=models.CASCADE)
Qty = models.ForeignKey('Products.Quantity',null=True,default=0,on_delete=models.CASCADE)
Rate = models.ForeignKey('Products.Rate',null=True,default=0,on_delete=models.CASCADE)
price = models.FloatField(null=True,default=None)
def save(*args, **kwargs):
if self.price is None:
self.price = self.Rate * 0.2
super().save(*args, **kwargs)
@hendrikschneider 的解決方案對我有用,除了小的變化。
class TableToRefer(models.Model):
Rate = models.FloatField(null=True,default=0)
Item = models.ForeignKey('Products.Product_description',primary_key=True,on_delete=models.CASCADE)
Qty = models.ForeignKey('Products.Quantity',null=True,default=0,on_delete=models.CASCADE)
Rate = models.ForeignKey('Products.Rate',null=True,default=0,on_delete=models.CASCADE)
price = models.FloatField(null=True,default=None
def save(self,*args, **kwargs):
if self.price is None:
self.price = self.Rate * 0.2
super().save(*args, **kwargs)
如您所見,在 save 方法中,您需要添加 self 作為第一個參數,它會將值添加為輸入速率的 0.2。
代碼執行(附截圖)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.