我试图在不使用for循环的情况下更新我的数据的某些“摘要模型”。这些摘要与数据共享许多相同的字段名称,因此我觉得应该有一种简便的方法来进行某种Summary.objects.all().update(**Subquery(Data.objects.filter(my_key=OuterRef('my_key')).aggregate(my_value_1=Sum('my_value_1'), my_value_2=Sum('my_value_2'))
或类似的操作,并更新Summary中的值。
但是,这并不是那么简单。首先,我会收到以下错误:ValueError: This queryset contains a reference to an outer query and may only be used in a subquery.
这似乎是由于aggregate
部分引起的,因为删除聚合可修复该错误...但我需要加总!当然,**Subquery()
会有一个不同的错误,.update(Subquery())
还会有另一个错误
我觉得有一个非常简单的解决方案可以解决我的问题,但我只是不断出错,无法弄清楚如何走上正确的道路。任何建议将不胜感激。