2017-03-13 2 views
0

하여 최신 객체와 순서를 얻으십시오 : 내가 쿼리를 실행하고자하는 다른 필드

그들에게 "좋아"를 기반으로 테이블 "미디어"최신 객체 (created_at) 주문에서 가져옵니다. (나는 "최신"무슨 뜻인지 이해하기 위해 예를 살펴주세요)

예 :

media_id - created_at - likes 
media_1 - 11/03/2017 - 12 
media_2 - 10/03/2017 - 13 
media_1 - 06/03/2017 - 8 
media_3 - 02/03/2017 - 6 
여기

, 우리는 media_1 2 시간을 가지고, 내가 최신 일 (created_at을 유지하고 싶습니다). 그렇다면, '-likes'로 주문하고 싶습니다.

media_id - created_at - likes 
media_2 - 10/03/2017 - 13 
media_1 - 11/03/2017 - 12 
media_3 - 02/03/2017 - 6 

내가 이것을 실행하려고하지만 오류 메시지가 발생합니다 :

는 반환합니다.. MyQuery.order_by ('MEDIA_ID', '-created_at') 구분 ('MEDIA_ID') order_by을

나는 그것이 도움을 줄 수 있는지 모르겠지만, 여기 내 모델 :

가 EDIT ('-likes')

instagram_user = models.ForeignKey(SocialAccount, on_delete=models.CASCADE) 
media_id = models.TextField(null=True, blank=True) 
type = models.TextField(null=True, blank=True) 
link = models.TextField(null=True, blank=True) 
likes = models.IntegerField() 
comments = models.IntegerField() 
location = JSONField(null=True, blank=True) 
images = JSONField(null=True, blank=True) 
videos = JSONField(null=True, blank=True) 
link = models.URLField(null=True, blank=True) 
tags = JSONField(null=True, blank=True) 
filter = JSONField(null=True, blank=True) 
caption = JSONField(null=True, blank=True) 
user_has_liked = models.BooleanField(default=False) 
attribution = JSONField(null=True, blank=True) 
users_in_photo = JSONField(null=True, blank=True) 
created_time = models.TextField(null=True, blank=True) 
created_at = models.DateTimeField(auto_now_add=True) 

def __str__(self): 
    return self.media_id 

class Meta: 
     verbose_name_plural = "Instagram Media" 
+0

당신의'models.py' 파일을 공유 제발, 제발 ? –

+0

편집에서 모델을 찾으세요 –

+0

당신은 분명하지 않습니다. 좋아하는 사람이 주문하는 경우 어떻게 "최신"을 얻고 있습니까? 최신 정보를 결정하는 것은 무엇입니까? –

답변

0
qv = Query.objects.order_by('-created_at','-likes')[:0] 
+0

시간을내어 주셔서 감사합니다하지만 당신이 내 질문을 이해하고 있는지 모르겠습니다. –

+0

그는 논리적이지 않은 질문을하는 것이 맞습니다. – Denis

0

"미디어"테이블에서 최신 개체를 가져와 "좋아요"를 기준으로 주문하십시오.

당신은 객체가되고 싶어

다음 오일을 가정하는 방법 최신를 선언하지 않는

(!) :

from datetime import datetime, timedelta 
now_dt = datetime.now() 
before_5_days = now_dt - timedelta(days=5) 

# Get from the table "Media" the latest (5 days) objects and order them based on "likes". 
Media.objects.filter(created_at__lte=now_dt, created_at__gte=before_5_days).order_by('likes') 
+0

내 질문을 편집했습니다. –