2014-04-27 2 views
0

를 반환 내가이 쿼리가 :파이썬 목록의 최대마다 다른 결과

res = [] 
obj1= MyModel1.objects.order_by('-id')[:1] 
obj2= MyModel2.objects.order_by('-id')[:1] 
res.extend(x for x in (obj1, obj2)) 
max_res = max(res) 

를하지만 나에게 매번 다른 결과를주고있다 - 또 다른 시간을, MyModel1에서 한 번을, MyModel2에서 다른 개체를 하나의 개체를 의미합니다. 내 소원은이 두 모델의 최신 객체를 얻는 것입니다.

내가 함께 노력 :

max_res = max(res, key=lambda r: r.id) 

하지만 말을한다 : 'QuerySet' object has no attribute 'id'

+0

의도적 obj1''로 반복 할당된다? – kviiri

+0

@kviiri 오 죄송합니다, 내 오타 – doniyor

답변

2

ordered_by 이후 리턴한다 검색어 세트를,이 검색어 세트 내부의 객체를 얻을 필요가있다. 나는 당신이 조각을하고 있다는 것을 알고 있지만, 당신의 조각은 또한 물체가 아니라 쿼리 모음을 반환합니다.

최신 개체를 찾을하려는 경우, 귀하의 경우는 가장 높은 ID를 가진 사람을 의미하며, 다음과 같은 질의가 필요합니다

obj1 = MyModel1.objects.latest('id') 
obj2 = MyModel1.objects.latest('id') 

max([obj1,obj2], key=lambda x: x.id) 
+0

대단히 감사합니다, Burhan. – doniyor