9
votes

ordre_by () ne fonctionne pas avec le filtre () dans la vue Django

Mon modèle:

{% for bild in bilder %}
    <li 
    {% ifequal bild.slot bild_id %}
            class="active" 
    {% endifequal %}
    onclick="window.location.href='/portfolio/{{ album_id }}/{{ bild.slot }}'"><div>{{ bild.slot }}</div></li>
{% endfor %}

{% for i in empties %}
    <li class="empty"></li>
{% endfor %}


4 commentaires

Vous ne faites pas quelque chose comme Bilder.order_by (...) quelque part plus tard à votre avis, êtes-vous?


Faites-vous quelque chose à BILDER avant de l'envoyer au modèle?


Je fais le même type de filtre et de commande_by dans un projet en ce moment et la syntaxe est la même que ce que j'ai, mais le mien fonctionne ... je vais jouer i la coquille un peu et essaye de comprendre cela


La seule chose que je fais plus tard dans la vue impliquant que le bauditier est la suivante: vide = gamme (18 - len (bilder))


4 Réponses :


16
votes

J'ai fait beaucoup de .Filter (). Commande_by () Code> Chaînes comme vous les avez, et rien ne saute pour moi comme hors de propos. Je n'ai jamais essayé de transporter cela qui commanderai au modèle sans traiter d'autres objets (généralement itérer sur eux), donc je me demande si le code order_by () code> est perdu dans le cadre de l'évaluation paresseuse de Django? Peut-être essayez peut-être d'envelopper le filtre (). Commande_by () Code> Ligne dans une liste () Code> Pour forcer l'évaluation là-bas au lieu d'être reportée jusqu'à quelques fois plus tard?

bilder = list(Bild.objects.filter(album__id = album_id).order_by('slot'))


2 commentaires

Merci pour votre suggestion! Malheureusement ce n'était pas ça. Je pense éviter le problème en ne donnant pas toutes les données au modèle. Dans mon cas qui pourrait être inefficace de toute façon. Mais je suis toujours curieux ...


Oh pardon. Cela a effectivement fonctionné! En effet, merci! Utilisation de la liste () a fait le tour! (Bien que je ne comprends toujours pas pourquoi ...)



5
votes

Vous devriez essayer de commander par Slot__ID.

Comme ceci: xxx


0 commentaires

0
votes

dans votre vues.py Vous n'avez pas besoin d'utiliser xxx

(avec double soulignes) Etant donné que "l'album" n'est pas lié comme un "album" HeuresTomanyField

ici est juste un "album",

donc la vues.py devrait avoir xxx

(avec un seul soulignement).

référence à Django Doc: https://docs.djangoproject.com/fr/2.0/topics/db/queries/#lookups-that-span-relationships < / a>


0 commentaires