2010-06-07 6 views
3

annotate을 사용하여 내 모델에서 발생 횟수를 계산하지만, 그룹 별 통계에서 오른쪽 필드를 사용하지 않습니다. 원하는 필드 (예 : 카운트 함수에서 지정된 필드)를 사용하는 대신 모델의 기본 키를 사용합니다. 예 : history_id이 ObjectHistorydjango 1.2에서 필드를 지정하십시오.

의 기본 키입니다

ObjectHistory.objects.annotate(revisions=Count('resource')) 

는 SQL을

SELECT *, COUNT(`resources_objecthistory`.`resource_id`) AS `revisions` FROM `resources_objecthistory` GROUP BY `resources_objecthistory`.`history_id` 

을 생산

내가 원하는 것은 :

SELECT *, COUNT(`resources_objecthistory`.`resource_id`) AS `revisions` FROM `resources_objecthistory` GROUP BY `resources_objecthistory`.`resource_id 

내가 발견

를 넣어

필드별로 오른쪽 그룹을 넣었지만 모델의 다른 필드에 액세스 할 수 없었습니다.

그룹 별 필드에서 resource_id를 사용하려면 어떻게 지정해야합니까?

답변

0

사용

here 문서화로서 원료에있어서, 예를 들어

ObjectHistory.objects.raw ("* COUNT (resources_objecthistory를 선택한다. revisionsresource_id AS)를 resources_objecthistory 군으로부터 resources_objecthistory .`resource_id 별")

0

보십시오

ObjectHistory.objects.values.('resource').\ 
    extra(select_params=('attribute1', 'attribute2'))\ 
    .annotate(revisions=Count('resource')) 
관련 문제