我试图在模板中构建一个表,该表显示满足特定条件的特定表的最新条目,特别是qor_json不为null或""。在某些情况下,对于给定的工具和上下文, no 记录符合条件。尽管如此,因为我想要一张桌子,我需要某种东西去那里,所以我试图以某种方式传递一个空白对象。下面的代码部分(我提供所有内容以提供上下文)是:
if action:
print c, t+":", action[0].qor_json, action[0].time
acts.append(action[0])
else:
acts.append(None)
以下是完整视图。我尝试做的是能够在没有匹配对象的情况下显示空白表格单元格,但如果 ,则显示对象的任意属性。< / p>
def index(request):
t = loader.get_template('index.html')
all_contexts = md.Contexts.objects.all().order_by('name')
all_tools = md.Tools.objects.all().order_by('name')
latest_actions = (md.Actions.objects
.values('tool', 'context')
.annotate(max_id=Max('id'))
)
actions = md.Actions.objects.exclude(qor_json__isnull=True).exclude(
qor_json__in=[""]).filter(id__in=[
a['max_id'] for a in latest_actions
])
set_of_tools = sorted(set(a.tool.name for a in actions))
set_of_contexts = sorted(set(a.context.name for a in actions))
names = []
act_rows = []
for c in set_of_contexts:
acts = []
for t in set_of_tools:
action = filter(
lambda a: a.tool.name==t and a.context.name==c, actions)
if action:
names.append(action[0].time)
acts.append(action[0])
else:
names.append(None)
acts.append(None)
act_rows.append(acts)
context = RequestContext(request, {
'contexts' : all_contexts,
'tools' : all_tools,
'bundles' : zip(names, act_rows),
'ct' : 25,
})
这是index.html模板。
<table width="90%" align="center" border=1 cellpadding=10>
<tr>
<th></th> {# Contexts on y-axis, Tools on x-axis #}
{% for tl in tools %}
<th><a href="/actions?tools={{tl.name}}&ct={{ct}}">{{ tl.name }}</a></th>
{% endfor %}
</tr>
{% for bundle in bundles %}
<tr>
<th><a href="/actions?context={{ bundle.0 }}&ct={{ct}}">{{ bundle.0.qor_json }}</a></th>
{% for action in bundle.1 %}
<td>{{ action.qor_json }}</a></td>
{% endfor %}
</tr>
{% endfor %}
</table>
我的想法是,如果我可以传入一个空白的Action对象,那么action.qor_json只会打印出没有数据的那些,但是我无法弄清楚如何创建一个空白对象,因为它来自一个只从数据库中提取东西的模型。有没有更好的方法来实现我想要实现的目标?
谢谢!
答案 0 :(得分:0)
Action
Django惯例是顺便打电话给你的模型Actions
,而不是{{1}}。