Я пытаюсь создать таблицу в шаблоне, которая показывает последнюю запись в конкретную таблицу, которая соответствует определенным критериям, в частности, что qor_json не имеет значения null или «". В некоторых случаях для данного инструмента и контекста есть no запись, соответствующая критериям. Тем не менее, так как я хочу таблицу, мне нужно что-то, чтобы туда попасть, поэтому я пытаюсь каким-то образом передать пустой объект. Часть кода ниже (который я обеспечиваю все для того, чтобы дать контекст), является:Как создать пустой объект модели в django?
if action:
print c, t+":", action[0].qor_json, action[0].time
acts.append(action[0])
else:
acts.append(None)
Ниже приводится полный вид. То, что я пытаюсь сделать, - это отобразить пустую ячейку таблицы в случаях, когда нет соответствующего объекта, но отображает произвольный атрибут объекта, если он делает.
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.qor_json не просто печатать ничего за тех, где не было никаких данных, но я не могу понять, как создать пустой объект, потому что это от модели, которая только извлекает вещи из базы данных. Есть ли лучший способ достичь того, чего я пытаюсь достичь?
Спасибо!