2014-04-27 3 views
0

J'ai cette questions:liste python max - retour à chaque fois un résultat différent

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) 

mais il me donne à chaque fois des résultats différents - sens, une fois un objet de MyModel1, une autre fois un autre objet de MyModel2. Mon souhait est d'obtenir le dernier objet amon ces 2 modèles.

J'ai essayé avec:

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

mais il est dit: 'QuerySet' object has no attribute 'id'

+0

Est-ce l'affectation répétée à 'obj1' intentionnel? – kviiri

+0

@kviiri oh désolé, mon typo – doniyor

Répondre

2

Depuis ordered_by renvoie un QuerySet, vous devez obtenir l'objet dans ce queryset. Je sais que vous faites trancher, mais votre découpage retournera aussi un jeu de questions, pas un objet.

Si vous voulez trouver le dernier objet, dans votre cas, cela signifie celui qui a le plus haut id, vous avez besoin de la requête suivante:

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

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

merci beaucoup, Burhan. – doniyor

Questions connexes