2017-09-10 4 views
1

models.pydjango le filtrage d'un modèle qui contient entier

STORY_CHOICES = (
    (0, 'Computer engineering'), 
    (1, 'Mechanical engineering') 
    ) 

views.py

story_list = MyOBJ.objects.all() 
query = request.GET.get('q') 
if query: 
     story_list = story_list.filter(
      Q(story__icontains=query) 
     ).distinct() 

histoire prend des données de STORY_CHOICES, lorsque je tente de rechercher et d'écrire « ingénierie informatique » ne donne rien . Aussi '0' donne 'Génie informatique'. Je veux couvrir le texte et faire une recherche de chaînes. J'essaie de prendre directement STORY_CHOICES et j'ai rencontré cet échec: FieldError at/... Impossible de résoudre le mot clé 'STORY_CHOICES' en champ. Les choix sont: .... Je n'ai pas trouvé un vrai chemin.

Répondre

1

vous pouvez essayer:

in_filter = [] 
query = request.GET.get('q', '').lower() 
for k, v in MyOBJ().STORY_CHOICES: 
    if query in v.lower(): 
     in_filter.append(k) 
if query: 
    story_list = story_list.filter(
     Q(story__in=in_filter) 
    ).distinct()