2016-11-25 2 views
0

Ich habe eine models.py Datei mit einigen Zeilen und ich möchte auf meine HTML-Vorlage alle Zeilen zurückgeben, die meinem Filter QuerySet entsprechen.Django QuerySet Filter über Zeichenfolge

#models.py 

def Test(request) : 

    CarCollection = MyModel.objects.filter(car="old") 

    context = { 
     "CarCollection" : CarCollection 
    } 

    return render(request, 'car.html', context) 

Mein HTML-Template wie folgt aussieht:

<!-- car.html --> 

{% block content %} 
<ul> 
{% for car in CarCollection %} 
    <li>{{ car }}</li> 
{% endfor %} 
</ul> 

{% endblock %} 

Aber meine Objekte wie folgt aussieht:

Volvo_old_car 
Audi_old_car 
Nissan_new_car 
old_Bentley 

So würde Ich mag einen String in meinem Objekt (old zum Beispiel) zu isolieren und zu gebe alle Objekte mit dieser Zeichenkette zurück. Aber diese Saite könnte am Anfang, in der Mitte oder am Ende stehen.

Der Filter wird zurück:

Volvo_old_car 
Audi_old_car 
old_bentley 

Ich brauche Regex zu verwenden, das zu tun?

Danke von vorab

Antwort

1

Statt

MyModel.objects.filter(car="old") 

tun

MyModel.objects.filter(car__icontains="old") 

Dies wird Django sagen, um herauszufiltern alle MyModel Objekte, bei denen car Felder old enthält.

P.S. Sie sollten auf jeden Fall die PEP8 Python-Konvention überprüfen. Dies wird Ihnen helfen, Code zu schreiben, der für Python-Entwickler leicht zu lesen ist.

+0

Vielen Dank, ich diese Option nicht wissen! –

0

Sie verwenden können: endswith oder istartswith in Abfrage.

CarCollection = MyModel.objects.filter(car__istartswith="old") 
0

Sie können die von Django bereitgestellten Feldnachschlage verwenden, um Ihr Abfrage-Set zu filtern.

Django - Field lookups

MyModel.objects.filter(car__contains="old") 
Verwandte Themen