2013-04-16 2 views
0

내 응용 프로그램의 다른 모델과 일반적인 외래 키 관계가있는 Tic 모델이 있습니다.Django 쿼리 - 일반 관계 필드의 쌍 수로 정렬

  • (콘텐츠 _, OBJECT_ID) 쌍 차례 나오는 (높은 순서)에 의해 지난 주
  • 정렬 이상을 "틱"을 제한 :

    class Tic(models.Model):  
        user = models.ForeignKey(User) 
        content_type = models.ForeignKey(ContentType) 
        object_id = models.PositiveIntegerField() 
        content_object = generic.GenericForeignKey('content_type', 'object_id') 
        added = models.DateTimeField(auto_now_add=True) 
    
        class Meta: 
         unique_together = ('user', 'content_type', 'object_id') 
    

    나는 다음이 모델을 조회하고 달성하고 싶다

  • 은 반환되는 개체를 수행 할 수 있어야 (는 "동영상"개체가 반환되는 경우, 할 수있을 예를 들어, 틱 [0] .content_object.movie_title)

지금까지 정확한 Tics를 얻는 다음 쿼리를 사용했지만 값 목록으로 올바르게 작동 할 수만 있습니다.

d = date.today() - timedelta(days=14) 
t = Tic.objects.filter(added__gt = d).values('content_type','object_id').annotate(num_tic = Count('id')).order_by('-num_tic') 

개체를 반환하는 비슷한 쿼리를 얻는 방법에 대해 알고 싶습니다.

편집

속행하기 위해, 나는 원시 쿼리에 의존하여이를 수행 할 수 있었다 :

sql = 'SELECT *, COUNT(*) AS count FROM tics_tic WHERE content_type_id = '+ str(movie_ct.id) +' GROUP BY content_type_id, object_id ORDER BY Count DESC' 

답변

0

은 ........ 단지 .values을 꺼내 ..

+0

현재 "개수"는 1 개의 필드 만 허용합니다. .values ​​('content_type', 'object_id')를 사용하면이 두 필드의 고유 한 쌍을 계산할 수 있습니다. – fordaaronj

+0

내가하려고하는 것을 정말로 오해하고있는 것이 아니라면 왜 2 주문을하지 않습니까? 콘텐츠 유형별로 먼저 ID별로? – Colleen