2010-08-03 3 views
0

J'ai une liste de données. Ce modèle de données comporte des champs plusieurs-à-plusieurs pour un modèle de catégories et un modèle de mots-clés. Le modèle de données a lui-même un nom et une description. Les données peuvent avoir plusieurs catégories et mots-clés.Dans Django, créer correctement un jeu de requête avec plusieurs catégories, plusieurs tags et rechercher?

Sur le frontal, l'utilisateur peut sélectionner un certain nombre de catégories pour filtrer les données ou effectuer une recherche ... Les données affichées doivent donc être des données avec l'une des catégories sélectionnées. Si 'Test Data 1' a la catégorie 'A' et 'Test Data 2' a la catégorie 'B', si l'utilisateur choisit de voir la catégorie 'A' et 'B', alors les deux données apparaîtront. La recherche est destinée à rechercher des données dans le titre, la description et les mots-clés associés aux données, si des catégories sont sélectionnées, elle recherchera dans quelles données il reste après que les catégories ont été interrogées.

Je ne suis pas un expert chez Django ici ... J'essaie de trouver la meilleure façon de le faire. Je ne veux pas utiliser quelque chose comme Haystack etc, car mes données sont vraiment très simples. J'ai trouvé que faire .filter() sur les objets me donne fondamentalement un ET dans le SQL sous-jacent, ce qui n'est pas idéal pour le fonctionnement des catégories. Il semble que j'ai besoin d'une sorte de OU ... peut-être? La sélection de la catégorie sur la face avant est faite avec un formulaire et donc les données qui reviennent sont essentiellement une liste des catégories sélectionnées ['A', 'B', 'C'] ... n'y a-t-il pas façon que je peux déposer cela dans un jeu de requête dans Django et retourne toutes les données qui ont une ou l'une de ces catégories?

Merci beaucoup!

Répondre

1

Je ne sais pas ce que vous voulez dire ici. Vous pouvez essayer quelque chose le long de ces lignes:

from django.db.models import Q 

query = 'fun' 
books = Fun.objects.filter(Q(categories__id__in=[1,2,3]), 
        Q(name__icontains=query) | \ 
        Q(description__icontains=query) | \ 
        Q(keywords__title__icontains=query)) 

http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

+0

Après avoir lu ceci, et puis en faisant faire plus de recherche de cela, il m'a vraiment aidé. Je vous remercie. J'avais juste besoin de voir un exemple de travail comme celui-ci pour comprendre. Merci! – littlejim84

Questions connexes