2016-10-31 4 views
0

Ich möchte Variable in elif sichtbar machen, ohne sie global zu machen, ist es auf andere Weise möglich?Django Variable sichtbar machen

if query !=something: 
    all_toys = Toys.objects.filter(user_name=request.user) 
elif query2 != something: 
    all_toys = all_toys.filter(amount=20) 

Sekunde all_toys ist nicht sichtbar, und ich habe diesen Fehler Django vor der Zuweisung referenziert.

+0

erstellen Was Sie tatsächlich versuchen zu tun? Was versucht dieser Code zu erreichen? – Sayse

+0

Ich versuche, Live-Suche zu erstellen und es gibt verschiedene gefilterte Objekt –

+0

Ich denke, Sie verstehen nicht, wie 'if' Anweisungen in Python funktioniert. In Ihrem Fall, wenn die erste Bedingung wahr ist, wird Code unter anderen Bedingungen nicht ausgeführt. Lesen Sie https://docs.python.org/2/tutorial/controlflow.html#if-statements und http://www.tutorialspoint.com/python/python_if_else.htm –

Antwort

1

Eine weitere Möglichkeit, diesen Filter Wörterbuch

filter_kw = {} 
if query !=something: 
    filter_kw['user_name'] = request.user 
elif query2 != something: 
    filter_kw['amount'] = 20 
all_toys = Toys.objects.filter(**filter_kw) 
0

Warum können Sie den Wert nicht oben deklarieren und unter allen Bedingungen verwenden?

all_toys = Toys.objects.all() 

if query != something: 
    all_toys = all_toys.filter(...) 
else: 
    all_toys = all_toys.filter(...) 

In Ihrem Fall ist all_toys nicht hat in dem elif Block definiert

+0

gibt es drei Eingänge. 2 dropdowns und 1 Texteingabe was, wenn Benutzer dieses Objekt mit allen filtern? –

+0

@ I.Jokhadze In diesem Fall einfach mehrere 'if's anstelle von elif verwenden. Das wird besser funktionieren –

Verwandte Themen