【问题标题】:Django - verbose_name from a template tagDjango - 来自模板标签的详细名称
【发布时间】: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 时,此方法才有效。
如果没有数据,如何获取每个模型的详细名称?

【问题讨论】:

    标签: django templates django-models django-templates


    【解决方案1】:

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

    尝试改用查询集:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2022-06-12
      相关资源
      最近更新 更多