Django - 来自模板标记的verbose_name

时间:2011-10-17 10:20:49

标签: django templates django-models django-templates

我需要显示几个型号的名称&模板中的对象

这是我的视图

def contents(request):
  """Lists Objects"""
  objects = [
    Model1.objects.all(),
    Model2.objects.all(),
    Model3.objects.all(),
    Model4.objects.all(),
    ...
  ]
  return render_to_response('content/contents.html', objs
  , context_instance=RequestContext(request)
  )

我的模板

{% for objs in objects %}
  <div class="object">
    <div class="object_name">{{ get_verbose_name objs.0 }}</div>
    <ul>
    {% for obj in objs %}
      <li>{{ obj }}</li>
    {% endfor %}
    </ul>
  </div>
{% endfor %}

我的模板过滤器

@register.simple_tag
def get_verbose_name(object):
  return object._meta.verbose_name_plural

仅当数据库中每个obj至少有一个Model时才有效 如果没有数据,我怎样才能得到每个模型的详细名称?

1 个答案:

答案 0 :(得分:4)

您正尝试从列表中的第一个对象获取模型。这样,如果此对象不存在,您将无法获得任何内容。

尝试使用查询集:

{{ get_verbose_name objs }}

@register.simple_tag
def get_verbose_name(queryset):
  return queryset.model._meta.verbose_name_plural