J'ai un modèle d'objets. J'ai également une liste d'options pour filtrer les résultats avec. Je ne sais pas s'il y a un moyen facile de filtrer les objets du modèle tel que n'importe quel objet correspondant à l'un des éléments de la liste de filtres est renvoyé. Par exemple: existe un moyen de filtrer (dans ce cas) le modèle utilisateur de telle sorte que tout objet correspondant à l'un des éléments de la liste de filtre est renvoyé? P> p>
3 Réponses :
deux choix.
Inclure la première lettre en tant que propriété de votre modèle. p> li>
Utilisez des requêtes plus avancées. P> LI> ol>
Vous pouvez faire ce p> maintenant pouvez-vous filtrer avec le filtre Le deuxième choix consiste à créer des objets Django Commencez ici: https://stackoverflow.com/search?q=django+q++ objets p> p> (first_letter__in = ('P', 'T' )) Code> P> Q code> pour votre filtre. P>
Vous ne pouvez pas filtrer sur les propriétés Python à l'aide de l'orme Django.
Django ne vous laissera pas utiliser autre chose que le champ (ou l'objet F) dans la recherche.
Je pense que les objets Django Q seraient meilleurs mais j'ai du mal à comprendre comment combiner deux objets Q (et lesquels) afin d'obtenir le résultat approprié. Ce dont j'ai besoin, c'est que tous les objets ayant un champ comme code> dans une liste. Compte tenu de l'exemple ci-dessus, Patrick, Robert, Thomas, etc. serait des résultats valides. Je ne peux pas sembler comprendre la structure appropriée pour les objets Q pour faire un "startswith aucun de p, t, r"
@ Paradoz870: Stackoverflow.com/questions/4147383/...
Ceci peut être fait avec Q Objets
filterList = ['P', 'T', 'R']
query = Q()
for letter in filterList:
query = query | Q(name__startswith=letter)
usersWithPTRName = User.objects.filter(query)
Sauf que cela suppose qu'il existe un nombre défini d'éléments que je cherche. La liste de filtre est spécifiquement faite de telle sorte qu'il puisse être de taille variable. J'ai besoin de quelque chose qui ne repose pas sur des objets Q à code Q
@ paradoz870 Voir le deuxième exemple
Merci. Cela a aidé tout à fait moi. J'ai utilisé cela en combinaison avec la suggestion de Ignacio de «réduire ()» ci-dessus.
@catavaran: Cela peut-il être fait à l'aide d'un & code>? J'ai essayé sans chance.
FYI: Si vous avez besoin de faire quelque chose comme ceci à l'aide de & code> Fonctionnalité, consultez Ce
Dans mon expérience, si la liste de filtre est vide, cela retournera tous les utilisateurs, plutôt qu'aucun utilisateur, vous devez donc probablement rechercher cette condition. Je suppose qu'un fichier Q () nouvellement construit est un filtre qui permet à tous les enregistrements, mais dès que vous "ou", il devient un filtre équivalant à la chose que vous ou, ce qui était contre-intuitif tome.
Vous pouvez utiliser python réduire code> et opérateur code> intégré: