Django - 来自模板标签的详细名称

Posted

技术标签:

【中文标题】Django - 来自模板标签的详细名称【英文标题】:Django - verbose_name from a template tag 【发布时间】:2011-12-09 04:36:48 【问题描述】:

我需要在模板中显示多个模型名称和对象

这是我的观点

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

仅当数据库中的每个 Model 至少有一个 obj 时,此方法才有效。 如果没有数据,如何获取每个模型的详细名称?

【问题讨论】:

【参考方案1】:

您正试图从列表中的第一个对象中获取模型。这样,如果这个对象不存在,你什么也得不到。

尝试改用查询集:

 get_verbose_name objs 

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

【讨论】:

以上是关于Django - 来自模板标签的详细名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 Form 标签在 Django 模板中获取模型的名称

将Django Choices表单字段的详细名称传递给查看上下文

来自 django 基本模板文件中 url 的变量

django 上的 urls-views-template 标签错误

jinja2中带有html标签的Django模板

Django 模板:选择的详细版本