Django Ошибка просмотра: локальная переменная, на которую ссылаются перед присваиванием -> Ошибка в операторе if? - PullRequest
0 голосов
/ 13 марта 2020

В моем Django виде у меня есть следующее if-l oop:

for i in queryset:

    if i['mnemonic'] == '#0602###95EUR00':
        cash_ps_totbank_eur = i['value'] 
        cash_ps_totbank_eur_sub1 = i['value']

    if i['mnemonic'] == '#0602###90EUR00':
        cash_ps_totbank_eur += i['value']        # Working
        cash_ps_totbank_eur_sub2 = i['value']

    if i['mnemonic'] == '#0602###95USD00':
        cash_ps_totbank_usd = i['value']
        cash_ps_totbank_usd_sub1 = i['value']

    if i['mnemonic'] == '#0602###2095900':
        cash_ps_totbank_usd += i['value']       # NOT working & throwing error
        cash_ps_totbank_usd_sub2 = i['value']

При загрузке шаблона, Django выдает мне сообщение «1004 *». Здесь я делаю то же самое, что и восемь строк выше, а именно добавление значения к переменной, которая была инициирована в if-l oop ранее и, следовательно, ей уже должно быть присвоено значение.

С переменными, заканчивающимися на _sub1 и _sub2, я попытался проверить, есть ли ошибка с проверкой на равенство между набором запросов и строкой. Но это не так. Переменные с _sub1 и _sub2 работают отлично и получают правильные значения, назначенные.

Есть идеи, что мне здесь не хватает?

1 Ответ

1 голос
/ 13 марта 2020

Вам необходимо определить эти две переменные снаружи для l oop:

cash_ps_totbank_eur = int()
cash_ps_totbank_usd = int()

, потому что в первый раз, когда оператор if i['mnemonic'] == '#0602###90EUR00': оценивается как True, тогда этот оператор cash_ps_totbank_eur += i['value'], который равное cash_ps_totbank_eur = cash_ps_totbank_eur + i['value'] приведет к ошибке, поскольку cash_ps_totbank_eur еще не определено

...