【问题标题】:Django: Operations on different fields of two different modelsDjango:对两个不同模型的不同字段的操作
【发布时间】:2020-08-03 16:47:08
【问题描述】:

这里定义了两个类,我想对两个模型的不同字段做一些计算。

class A(models.Model):
    newspaper = models.CharField(max_length=50)
    language = models.CharField(max_length=50, choices=Language)
    wh_price = models.DecimalField(max_digits=6,decimal_places=2)
    sa_price=models.DecimalField(max_digits=6,decimal_places=2)

class B(models.Model):
    added_date = models.DateField(max_length=32,auto_now_add=True)
    newspaper = models.ForeignKey(Newspaper,on_delete=models.CASCADE)
    qty=models.IntegerField(default=0)
    qty_return =models.IntegerField(default=0)
    total = models.DecimalField(max_digits=6,decimal_places=2)

total(来自 B)= wh_price(来自 A)* qty(来自 B)

【问题讨论】:

  • 您能否正确缩进代码,同时指定您想要的什么。也许包括一些样本数据和一些样本输出。
  • 报纸是外键 模型 A 是报纸。所以当我给报纸和数量的时候。 total 必须自动计算保存总列。所以这实际上需要

标签: python django model


【解决方案1】:

你可以重写 b 类的保存函数如下:

class Intake(models.Model):
    # your fields..
    # below is the save function which we are overriding
    save(self, *args, **kwargs):
        self.total = self.newspaper.wh_price * self.qty
        super(Intake, self).save(*args, **kwargs)

据我了解,这将达到目的。

【讨论】:

  • 当我选择报纸并放入数量但总值不计算。我也可以连接 pk 吗?
  • 我做到了。但不是保存在总数据字段中的值。
  • 然后只显示您的观点并更新您的代码..根据您提供的信息,我只能说这些
  • 这里是代码: def save(self, Newspaper, *args, **kwargs): super(Intake, self).save(*args, ** kwargs) self.total = 报纸.wh_price * self.qty self.save()
  • 您可以这样做,因为您已经将报纸作为外键.. self.total = self.newspaper.wh_price * self.qty 并告诉我是否保存了新创建模型的实例或只有总数据字段没有被填充。我想看看你保存 Intake 实例的 views.py
猜你喜欢
  • 2012-03-12
  • 1970-01-01
  • 2019-02-05
  • 2019-02-22
  • 2015-03-14
  • 1970-01-01
  • 2021-01-02
  • 2019-08-11
  • 2016-11-10
相关资源
最近更新 更多