Python 如何获取查询集的每日总计
这里是新的Python/Django程序员。我一直在玩d3.js,在创建多系列折线图时遇到了一些问题。我已经缩小了问题的范围,我认为这是因为我发送给d3的数据每天有多个值 如果您选择回答,我的问题是:如何计算每种交易类型(贷记或借记)每天的总额? Models.pyPython 如何获取查询集的每日总计,python,django,Python,Django,这里是新的Python/Django程序员。我一直在玩d3.js,在创建多系列折线图时遇到了一些问题。我已经缩小了问题的范围,我认为这是因为我发送给d3的数据每天有多个值 如果您选择回答,我的问题是:如何计算每种交易类型(贷记或借记)每天的总额? Models.py class Transaction(models.Model): class Transaction(models.Model): user = models.ForeignKey(Users, null=True)
class Transaction(models.Model):
class Transaction(models.Model):
user = models.ForeignKey(Users, null=True)
date = models.DateField(null=True, blank=True)
description = models.TextField(max_length=75, null=True, blank=True)
original_description = models.TextField(max_length=75, null=True, blank=True)
amount = models.DecimalField(max_digits=12, decimal_places=2, null=True, blank=True)
transaction_type = models.TextField(max_length=75, null=True, blank=True)
category = models.TextField(max_length=75, null=True, blank=True)
account = models.ForeignKey(Account, null=True)
account_name = models.TextField(max_length=75, null=True, blank=True)
dashboard.py
import homepage.models as hmod
@view_function
def process_request(request):
params = {}
if request.user.is_authenticated():
user_session = request.user
userid = user_session.id
else:
return HttpResponseRedirect('/homepage/login/')
trans = hmod.Transaction.objects.all().filter(user_id=userid).values_list('date', 'transaction_type', 'amount', 'category', 'account_name').order_by('date')
x = 0
y = 0
for tran in trans:
if tran[1] == "credit":
x += 1
else:
y += 1
print(x)
print(y)
trans_json = json.dumps(list(trans), cls=DjangoJSONEncoder)
params['trans_json'] = trans_json
return templater.render_to_response(request, 'dashboard.html', params)
*x和y只是用来计算每种类型的事务总数,而我却在努力计算
html/脚本--只是一个摘录。如果有帮助的话,我可以把整个剧本都包括进去
//bring json data from dashboard.py
var data = ${trans_json}
...
// Group by transaction_type
var credit = data.filter(function(d) {
return d[1] == "credit";;
});
var debit = data.filter(function(d) {
return d[1] == "debit";
});
....
svg.selectAll('.line')
.data([debit, credit])
.enter()
.append('path')
.attr('class', 'line')
.style('stroke', function(d) {
return colors(Math.random() * 50);
})
.attr('clip-path', 'url(#clip)')
.attr('d', function(d) {
return line(d);
})
在我当前的设置中,数据以d=“2014-09-12,借方,-9.85,快餐,支票…”的格式作为所有交易的一个长块返回(按“借方”或“贷方”分组)
但是,当我返回行(d)时,我得到了丑陋的错误d=“MNaN,160.57666664cnan,160.576616666664,NaN…”
我在过去创建了一个折线图,但是我当时使用的数据每天只有一个条目。这就是为什么我认为我的错误可能是用户每天有多个事务,这使得绘制一条线很困难
我愿意接受你们所有人能提供的任何帮助。如果你们能帮我获得查询集的每日总数并将其传递给脚本,太棒了。或者如果有更好的方法来实现我的愿望,我很乐意放弃,从另一个角度开始
谢谢
注意如果有小的语法错误(即${trans_json}),这可能是因为我在称为django-Mako plus的排序堆栈中也使用了Mako
尽管如此,我也可能会有真正的语法错误。^^我尝试标记django mako plus,但它似乎还不是一个标记。我不是django人,但如果您只想按日期计数,那么您的查询应该类似于:
hmod.Transaction.objects.all().filter(user\u id=userid.values('date')。注释(count=count('amount')).order_by('date')
谢谢。你知道一种方法来获得每天发生的贷记和借记交易的总额吗?嗯,你能在其中再加一个值吗?hmod.Transaction.objects.all().filter(user_id=userid)。值('Transaction_type')。值('date')。注释(count=Count('amount'))。order_by('date')
。我又不是django用户,所以我只是在猜测:)听起来你在寻找Python解决方案,所以我删除了D3标记。如果不正确,请随意添加它并澄清问题。