2015-05-04 6 views
0

Я пытаюсь создать таблицу в шаблоне, которая показывает последнюю запись в конкретную таблицу, которая соответствует определенным критериям, в частности, что 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 не просто печатать ничего за тех, где не было никаких данных, но я не могу понять, как создать пустой объект, потому что это от модели, которая только извлекает вещи из базы данных. Есть ли лучший способ достичь того, чего я пытаюсь достичь?

Спасибо!

ответ

0
if action: 
    print c, t+":", action[0].qor_json, action[0].time 
    acts.append(action[0]) 
else: 
    acts.append(md.Actions()) 

Джанго конвенции было бы назвать вашу модель Action, не Actions, кстати.

Смежные вопросы