0
class Daily(models.Model):
  rpt_date = models.DateField('Report Date', primary_key=True) 
  total_d_sors = models.IntegerField() 
  loaded_d_sors = models.IntegerField()
  #diff_d_count
  d_sors_missed_eod = models.CharField(max_length=300)
  total_m_sors = models.IntegerField() #monthly
  loaded_m_sors = models.IntegerField() #monthly
  m_sors_missed_eod = models.CharField(max_length=300) 

我的models.py中有上面的类,但是当我通过视图显示它时,我需要一个额外的列,它将在两个现有列(total_d_sors和missed_d_sors)之间产生差异,即diff_d_count =(total_d_sors -missed_d_sors).. . 有人可以帮忙吗?我看到了游标实现的例子;还有其他方法吗?

4

2 回答 2

2

为什么不在模型上添加一个属性并在模板中显示它时即时计算它?

class Daily(models.Model):

  @property
  def diff_d_count(self):
    return self.total_d_sors - self.missed_d_sors

然后你可以在你的模板中或任何地方通过obj.diff_d_count.

于 2013-09-13T23:05:28.613 回答
1

要查找可以使用的 2 列之间的差异,

1. 注释

2.F 表达式

您的查询是,

Daily.objects.annotate(diff=F('total_d_sors')-F('missed_d_sors'))

带有模板的示例工作代码,

from django.db.models import F
from django.template import Context, Template
context = Context({"daily_objects": Daily.objects.annotate(diff=F('total_d_sors')-F('missed_d_sors'))})
template = Template("{% for i in daily_objects %} {{i.id}} || {{i.diff}}. {% endfor %}")
template.render(context)
于 2019-09-25T10:37:03.080 回答