在Django中使用NVL和字符串?

时间:2017-09-01 17:54:12

标签: python sql django nvl oracledb

在Django应用程序上,我使用cx_Oracle来显示一个体育运动员名单:

def get_players(self, sport_code='', term=0):
"""

:rtype: object
"""
con = cx_Oracle.Connection(settings.BANNER_CONNECTION_URL)
cursor = con.cursor()
query = 'select PREF_NAME, CLASS, ELIGIBLE_HOURS, CHECKED_IN, SEASONS_USED, MAJR1, NVL(MINR1, Null), CA_EMAIL, ID from swvsprt_web where ACTC = \'%s\' AND term = \'%s\' ORDER BY PREF_NAME' % (
    sport_code, term)
cursor.execute(query)
players = cursor.fetchall()
cursor.close()
con.close()
return players

如果他们没有轻微的

,我希望轻微的空白
NVL(MINR1, Null)

但我无法让NVL表现得更好。 “Null”使其打印“无”字样。如果我做

NVL(MINR1, 0)

它将显示0,但如果我尝试以下任何一种情况,它们会导致网站崩溃,并出现500错误:

NVL(MINR1, )

NVL(MINR1, '')

NVL(MINR1, "")

我们可以使用NVL使其显示空值吗?

2 个答案:

答案 0 :(得分:0)

在Python中,' null'对象是单身None

如果要显示其他内容,则应对数据进行后处理,并将该字段中None的值替换为空字符串。

更好的选择可能是将None的值保留在后端表示中。这更像是没有辅助字符而不是空字符串。

然后,在前端模板上,您可以检查空值,如果MINR1为None则显示空字符串。

答案 1 :(得分:0)

在Django模板中有一个Oracle NVL的类比:

<td><span class="entityName">{{ attr.name|default_if_none:"" }}</span></td>

如果attr.name is None将输出一个空字符串。

这里是documentation