Замена значений в SQL-запросах

Я создал приложение для печати пробного баланса из некоторых элементов базы данных в соответствии с приведенным ниже кодом.

В настоящее время распечатывается, как показано в следующем примере:

enter image description here

как я могу заменить '0' в таблице на пробелы, чтобы она отображалась как: enter image description here

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>

Если вам важно, как выглядит ваш код, вы можете создать собственный виджет.

Вернуться на верх