Django - 无法将整数记录添加到字典中的整数?

Django - can't add ints records to ints in dictionaries?

这一定是我的误会——我是来这里学习的。感谢任何帮助。

我在尝试添加循环遍历一组 Django 对象记录的整数时遇到类型错误,我不知道为什么。


我有一个充满日期戳值的数据库。我想将适当字段的值加在一起以获得每日总计,同时承认不会有每个产品每天的记录。例如。 :

Product A has sales on May 11, 12, and 14
Product B has sales on May 6, 11, 14 and 19

我最终想要的是一组连续的销售总额,然后我可以绘制图表。对于这张图,我不关心日期,我想要趋势。我已经对单个产品进行了处理,但我正在尝试使其与产品集合的总销售额一起使用。

我觉得这是很标准的东西。

我的记录是这样的:

Data_Record:
product_id | product_family | datetime | daily_sales | daily_profit 

当前解决方案

product_family_totals = {}

for Data_Record in Records_From_Table:

   if Data_Record.product_family not in product_family_totals.keys():
      product_family_total[Data_Record.product_family] = {}

   if Data_Record.date not in product_family_totals[Data_record.product_family]:
      product_family_total[Data_record.product_family][Data_Record.date] = {
       'sales' : Data_Record.daily_sales,
       'profit': Data_record.daily_profit }
   else:
      product_family_total[Data_record.product_family][Data_Record.date]['sales'] += Data_Record.daily_sales
      product_family_total[Data_record.product_family][Data_Record.date]['profit'] += Data_Record.daily_profit

当我这样做时,我得到这个错误:

TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'

这真的很奇怪,因为当我检查每个项目的类型时,它们都是整数。

print(f"Data_Record.daily_sales is {type(Data_Record.daily_sales)}")
print(f"product_family->daily_sales {type( product_family_total[Data_record.product_family][Data_Record.date]['sales'])}")

结果

Data_Record.daily_sales is type <class 'int'>
product_family->daily_sales is type <class 'int'>

糟糕的工作

可以将这些值加在一起并像这样将它们放入我的结果字典中

... 
 else:
     x = product_family_total[Data_record.product_family][Data_Record.date]['sales']
     y = Data_Record.daily_sales
     z = x + y
    product_family_total[Data_record.product_family][Data_Record.date]['sales'] = z

...但这是错误的。


我承认我是一个年长的编码员,但是有人可以帮助我了解这里发生的事情吗?这对我来说完全是疯子

你是不是不小心留下了任何 .或者,在你的代码中?我曾经遇到过这个问题,原因是:

Python 3.8.3 (default, May 17 2020, 14:48:56) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 3
>>> y = 4
>>> x += y,
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'