2017-09-10 4 views
1

models.py enthältdjango ein Modell Filterung, die ganzzahlige

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() 

Geschichte Daten aus STORY_CHOICES nimmt, wenn ich versuche, suchen und schreiben ‚Computertechnik‘ es gibt nichts . Auch '0' gibt 'Computer Engineering'. Ich möchte es auf Text zu decken und es String-Suche nehmen. Ich versuche, STORY_CHOICES direkt zu nehmen, und ich traf dieses fehlgeschlagen: FieldError at/... Kann Schlüsselwort 'STORY_CHOICES' in Feld nicht auflösen. Zur Auswahl stehen: .... Ich habe keinen richtigen Weg gefunden.

Antwort

1

können Sie versuchen:

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()