【发布时间】:2017-02-19 21:29:03
【问题描述】:
我的模特:
class Transaction (models.Model):
transaction_id = models.AutoField(primary_key=True)
net_monthly_transaction = models.DecimalField(max_digits = 10, decimal_places = 2, default=0)
# deposit or withdrawal (withdrawal with negative value)
amount = models.DecimalField(max_digits = 10, decimal_places = 2)
time_stamp = models.DateTimeField(default=datetime.now, blank=True)
def __str__(self): # __unicode__ on Python 2
return str(self.time_stamp) + str(self.amount) + str(self.net_monthly_transaction)
我的目标是从每个月的最后一个条目中获取 net_monthly_transaction 的值。
在 S.O. 的帮助下我已经做到了这一点:
truncate_date = connection.ops.date_trunc_sql('month', 'time_stamp')
lem = Transaction.objects.extra({'month':truncate_date}).values('month').annotate(last_record=Max('time_stamp')).values_list('net_monthly_transaction', flat=True)
上面的查询假设是从每个月的 max time_stamp 中获取 net_monthly_transaction 的值。
但事实并非如此。
如果我一个接一个地为十月创建三个条目:
- net_monthly_transaction = 3000
- net_monthly_transaction = 4000
- net_monthly_transaction = 5000
查询将返回所有 3 个值。
另一方面:
- net_monthly_transaction = 3000
- net_monthly_transaction = 2000
- net_monthly_transaction = 1000
那么只返回值 3000。
因此,根据 net_monthly_transaction 的大小在某处设置了条件。我对如何解决这个问题有点迷茫。
有人可以提供一些方向吗?
提前致谢。
【问题讨论】:
-
你使用的是什么版本的 Django?答案因人而异
-
@TitusP 我正在使用最新的 django 和最新的 python。
标签: mysql django django-queryset