簡體   English   中英

訪問 Django 中 model 中的字段值

[英]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。

代碼執行(附截圖)

在表格中插入一行

Output 在后端

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM