Travailler sur un projet avec un autre. Ceci est un code que j'ai écrit dans view.py
pour trier un QuerySet basé sur certaines données de formulaire:Méthode la plus efficace pour trier un QuerySet Django basé sur une valeur de formulaire
# Get sort by value
sort_by = search_form.cleaned_data.get('sort_by', SORT_BY_LAST_VISIT)
# Gather stops
stops = Stops.approved_objects.filter(**query_attributes)
# Do neccessary sorting
if sort_by == SORT_BY_PRICE:
stops = stops.order_by('price')
else: # By default, sort by last visted
stops = stops.order_by('last_visited')
Cependant, hier soir, mon collègue modifié le code à ceci:
# Get sort by value
sort_by = search_form.cleaned_data.get('sort_by', SORT_BY_LAST_VISIT)
# Gather stops based on sort
if sort_by == SORT_BY_PRICE:
stops = Stops.approved_objects.filter(**query_attributes).order_by('price')
else: # By default, sort by last visted
stops = Stops.approved_objects.filter(**query_attributes).order_by('last_visited')
Son commentaire SVN: More efficient
.
Selon Django's documentation, les deux équivaudront à une requête de base de données. Il est possible que je manque quelque chose d'autre. Peut-être le fait que je mets la variable s'arrête (stops = ...
) deux fois? Parce que je ne peux pas le contacter avant lundi, je pense que je vais aller à la communauté SO sur celui-ci.
+1 pour améliorer quelque chose que je ne savais pas d'amélioration nécessaire. Comme toujours, beaucoup obligé @Ignacio. –