Замена значений в SQL-запросах
Я создал приложение для печати пробного баланса из некоторых элементов базы данных в соответствии с приведенным ниже кодом.
В настоящее время распечатывается, как показано в следующем примере:
как я могу заменить '0' в таблице на пробелы, чтобы она отображалась как:
Views.py
def Kyletrb(request):
all = 'SELECT Master_Sub_Account , cAccountTypeDescription , Debit , Credit FROM [Kyle].[dbo].[PostGL] '\
'Inner JOIN [Kyle].[dbo].[Accounts] '\
'on Accounts.AccountLink = PostGL.AccountLink '\
'Inner JOIN [Kyle].[dbo].[_etblGLAccountTypes] as AccountTypes '\
'on Accounts.iAccountType = AccountTypes.idGLAccountType'
cursor = cnxn.cursor();
cursor.execute(all);
xAll = cursor.fetchall()
cursor.close()
xAll_l = []
for row in xAll:
rdict = {}
rdict["Description"] = row[0]
rdict["Account"] = row[1]
rdict["Credit"] = row[2]
rdict["Debit"] = row[3]
xAll_l.append(rdict)
creditTotal = ' Select ROUND(SUM(Credit) , 2) FROM [Kyle].[dbo].[PostGL] WHERE Credit <> 0.0'
cursor = cnxn.cursor();
cursor.execute(creditTotal);
xCreditTotal = cursor.fetchone()
debitTotal = ' Select ROUND(SUM(Debit) , 2) FROM [Kyle].[dbo].[PostGL] WHERE Debit <> 0.0'
cursor = cnxn.cursor();
cursor.execute(debitTotal);
xDebitTotal = cursor.fetchone()
return render(request , 'main/Kyletrb.html' , {"xAlls":xAll_l , 'xCreditTotal':xCreditTotal , 'xDebitTotal':xDebitTotal})
HTML:
Как я могу это сделать? Если у кого-нибудь есть пример или документация, пожалуйста, поделитесь .
Есть несколько способов, как можно решить эту проблему.
Например, вы можете добавить if-statement
внутри вашего SQL, чтобы он возвращал пустую строку, если значение равно 0.
Кроме того, вы можете добавить if-statements
внутри вашего Django-Template, который заменяет все значения дебета и кредита, равные 0.
Другим решением было бы просто использовать ternary if-statements
внутри цикла for loop, который заменяет все значения дебета и кредита, равные 0, на пустые Strings.
Ниже я добавлю код для последнего решения.
for row in xAll:
rdict = {}
rdict["Description"] = row[0]
rdict["Account"] = row[1]
rdict["Credit"] = row[2] if row[2] != 0 else ""
rdict["Debit"] = row[3] if row[3] != 0 else ""
xAll_l.append(rdict)
Желаю удачи.
Чтобы достичь этого результата наиболее простым способом, вы можете реализовать if else внутри вашего шаблона.
Просто пример
Дебет
<td>
{%if xAll.Debit > 0%}
{{xAll.Debit}}
{%endif%}
</td>
За кредит
<td>
{%if xAll.Credit > 0%}
{{xAll.Credit}}
{%endif%}
</td>
Если вам важно, как выглядит ваш код, вы можете создать собственный виджет.