2009-11-16 7 views
0

Dans Django, j'ai un modèle, et je vais avoir un dictionnaire ayant les ID des objets dans ce modèle comme des clés, et un poids comme valeurs. Je voudrais utiliser ces poids dans un order_by:Comment trier les modèles par valeurs dans un dictionnaire?

MyModel.objects.filter(title__icontains=query).order_by('value_from_the_dictionary') 

Comment faire cela?

Je ne peux pas mettre les poids dans le modèle, car ils seront différents dans chaque appel de cette vue, et je ne veux pas les enregistrer n'importe où, ils seront calculés sur chaque requête de l'URL.

Répondre

5

Le tri dans order_by est effectué par la base de données, donc si ces éléments ne se trouvent pas dans la base de données, vous ne pouvez pas les commander. Vous devrez obtenir le jeu de requête et ensuite faire la commande en Python.

qs = MyModel.objects.filter(title__icontains=query) 
qs.sort(key=lambda x: mydict[x]) 
+0

+1 Pour une utilisation simple et rapide de lambda :) – Bartek

Questions connexes