Django - 模板标签中的verbose_name [英] Django - verbose_name from a template tag

查看:165
本文介绍了Django - 模板标签中的verbose_name的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to display several models name & objects in a template

这是我的视图

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 %}

而我的模板过滤器 / p>

And my template filter

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

只有至少有一个 obj 数据库中的每个模型

如果没有数据,我如何获取每个模型的详细名称?

This works only if there is at least one obj for each Model in the database.
How can I get the verbose name of each Model if there is no data ?

推荐答案

您正在尝试从列表中的第一个对象获取模型。这样,如果这个对象不存在,你就不会得到任何东西。

You are trying to get a model from the first object in the list. This way, if this object does not exist, you won't get anything.

尝试使用查询集:

{{ get_verbose_name objs }}

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

这篇关于Django - 模板标签中的verbose_name的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆