장고

2010-03-02 6 views
0

의 평균 연령을 계산하는 것은 내가 항목의 평균 연령 알아낼 필요 (다양한 기준별로 그룹화를하지만 문제가 될 것 같지 않습니다). 그러나 나는 효과적으로 (MySQL의 상단에) 장고를 사용 DateTimeField을 통해 집계를 만드는 방법을 찾지 못합니다.장고

순수 Item.objects.all.aggregate(Avg('created'))은 가짜 값 (예 : 20081988007238.133)을 생성하고 Item.objects.all.extra(...)을 사용하여 집계하는 방법을 찾지 못했습니다. 내가 수동으로 SQL 쿼리 (SELECT AVG(UNIX_TIMESTAMP(created)) FROM items_item 같은)를 만들 수 있습니다,하지만 응용 프로그램에서 MySQL의 특정 코드를 사용하지 않으려는 물론

. 그냥 참조

, 샘플 모델 I 테스트에 사용할 : 나는 extra 방법을 사용하는 등 다른 방법이 없다고 생각

class Item(models.Model): 
    name = models.CharField(max_length = 255) 
    created = models.DateTimeField() 

답변

0

. 그것은 (테스트하지) 다음과 같이한다 :

Item.objects.extra('avg': 'AVG(UNIX_TIMESTAMP(created))'.values('avg') 

문제는, 당신은 전에 UNIX 타임 스탬프로 날짜를 변환 할 필요가있다. 그렇지 않으면 평균을 계산할 수 없습니다. 문자열의 평균은 참으로 쓰레기를 생성합니다.

+0

좋아, 나는 심지어 여분의 잘못된 가정에 저를 이끌어 그것이 무엇 :-) 집계를하지 않았다 등으로 Item 객체를 가지고 있음을 혼동되었다. –