Django注释在字段上添加了额外的

时间:2011-05-17 09:40:12

标签: django annotations aggregation extra

我正在尝试找到一种方法来对添加在一起的模型上的两个字段进行注释。类似的东西:

total_done = qs.values(
    'ability__ability_name',
).extra(
    select={
        'total_amount': 'effective_value + overage',
    }
).annotate(
    total=Sum('total_amount'),
).values(
    'ability__ability_name', 'total_amount'
).order_by('-total_amount')

以上操作不起作用并产生错误“无法将关键字'total_amount'解析为字段” 我已经尝试过此处显示的解决方案:Using .aggregate() on a value introduced using .extra(select={...}) in a Django Query? 然而,没有运气仍然得到“无法解析关键字'total_amount'到字段”

除了在原始sql中执行查询之外的任何其他内容,因为传入的查询字符串可能具有各种过滤器,并且已经对其进行了排除,使得该前景变得有点复杂。我也试图避免将字段添加到实际模型中并在保存期间计算它的值,除非这是唯一的方法。

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

total_done = qs.extra(select = {'total_amount': 'SUM(one_column + another_column)'}, )

答案 1 :(得分:1)

我认为最好使用用户注释来获取 total_amount 值:

post '/uploads/:filename' do  
  File.open("./uploads/#{params[:filename]}", 'wb') do |f|  
    f.write(params[:filename].read)  
  end  
end  

答案 2 :(得分:0)

根据https://stackoverflow.com/a/4348728/122033的答案(实际上在评论中):“Django当然将fullName作为别名传递,这对MySQL不起作用” - 我的猜测既不是SQLite,也不是SQLite一直在使用。 :(