我正在尝试应用一些应用程序,我需要根据“严重性”,红色,黄色或绿色的“报告”来更改某些图像的背景颜色。
视图(index.html):
欢迎{{= auth.user.first_name}}
{{报告中的报告:}}
type =“text / css”> .eq_img {background-color:{{= bg_color(reports.severity)}(在样式标签中)
带有图片类的表= eq_img
控制器(default.py):
def equipment():
报告= db()。select(db.repo.ALL)
返回本地人()
模型(db.py):
db.define_table( '回购',
字段( '体', '文本',需要= IS_LENGTH(500,1),标记= “报告”),
字段('严重性',要求= IS_IN_SET(['绿色','黄色','红色'])),
字段('posted_on','datetime',可读= False,可写= False),
字段('posted_by','reference auth_user',writable = False),
def bg_color(严重性):
如果严重性==“红色”:
返回'red'
elif severity ==“Yellow”:
返回'黄色'
否则:
返回'绿色'
现在它始终返回列表中最后一个报告的颜色。我需要它来找到最严重的报告,如果不是红色,那么是黄色,然后是绿色。任何帮助非常感谢。
答案 0 :(得分:0)
您要做的事情并不完全清楚,但是如果您想将.eq_img类的背景颜色设置为查询返回的所有记录中存在的最高严重性值,您可以执行类似的操作这样:
模特:
severities = ['Green', 'Yellow', 'Red']
db.define_table('repo',
Field('body','text',requires=IS_LENGTH(500,1),label="report"),
Field('severity', requires=IS_IN_SET(severities)),
Field('posted_on','datetime', readable=False, writable=False),
Field('posted_by','reference auth_user', writable=False))
在控制器中:
def equipment():
reported = db().select(db.repo.ALL)
max_severity = max([severities.index(r.severity) for r in reported])
severity_color = severities[max_severity].lower()
return dict(reported=reported, severity_color=severity_color)
在上面,max_severity
是一个整数(0,1或2),对应于记录中找到的最大严重性级别。
在视图中:
.eq_img {background-color:{{=severity_color}};}
请注意,上述内容不应与原始代码中的for循环一致。