1

Django 1.4 と Python 2.7 を使用しています。

私はいくつかの値の合計を行っています...これを行うと、この作業は完璧です:

CategoryAnswers.objects.using('mam').filter(category=cat["category"], brand=cat["brand"], category__segment_category=cat["category__segment_category"]).values('category__name', 'brand__name','brand__pk').annotate(total=Sum('answer'))

そして、クエリを生成します:

    SELECT `category`.`name`, `brand`.`name`, `category_answers`.`brand_id`, SUM(`category_answers`.`answer`) AS `total` 
FROM `category_answers` 
INNER JOIN `category` 
ON (`category_answers`.`category_id` = `category`.`id`) 
INNER JOIN `brand` 
ON (`category_answers`.`brand_id` = `brand`.`id`) 
WHERE (`category_answers`.`category_id` = 6  AND 
`category_answers`.`brand_id` = 1  AND 
`category`.`segment_category_id` = 1 ) 
GROUP BY `category`.`name`, `brand`.`name`, `category_answers`.`brand_id` 
ORDER BY NULL

しかし、新しい値を追加すると、これは機能しません:

CategoryAnswers.objects.using('mam').order_by().filter(category=cat["category"], brand=cat["brand"], category__segment_category=cat["category__segment_category"]).values('category__name','category__pk','brand__name','brand__pk').annotate(total=Sum('answer'))

返されたクエリを見ると、問題は間違ったフィールド ( category_answers. id) による django add on group です:

SELECT `category`.`name`, `category_answers`.`category_id`, `brand`.`name`, `category_answers`.`brand_id`, 
SUM(`category_answers`.`answer`) AS `total` 
FROM `category_answers` 
    INNER JOIN `category` 
      ON (`category_answers`.`category_id` = `category`.`id`) 
    INNER JOIN `brand` 
      ON (`category_answers`.`brand_id` = `brand`.`id`) 
WHERE (`category_answers`.`category_id` = 6  AND 
`category_answers`.`brand_id` = 1  AND 
`category`.`segment_category_id` = 1 ) 
    GROUP BY `category_answers`.`id`, `category`.`name`, `category_answers`.`category_id`, `brand`.`name`, `category_answers`.`brand_id` 
ORDER BY NULL

パラメータを削除すると、これが機能するため、これが問題固有のパラメータであるとは思いません...何か間違っていますか?

4

1 に答える 1