Django – Modelo de visualización de plantillas verbose_names y objetos

Necesito mostrar varios modelos de nombres y objetos en una plantilla

Aquí está mi punto de vista

def contents(request): """Lists contents""" 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) ) 

Y mi plantilla

 {% for objs in objects %} 
{{ objs._meta.verbose_name }}
    {% for obj in objs %}
  • {{ obj }}
  • {% endfor %}
{% endfor %}

Por supuesto objs._meta.verbose_name no funciona

¿Hay alguna forma de acceder a este nombre detallado sin tener que crear una función para cada modelo o asignar el valor de la vista para cada modelo?

Para acceder a ella en su plantilla, probablemente ya se habrá dado cuenta de que Django no le permite usar prefijos de subrayado para acceder a los atributos de las plantillas. Por lo tanto, la forma más fácil de acceder al nombre detallado para cualquier objeto dado sin tener que crear un método de modelo en cada modelo sería crear una etiqueta de plantilla:

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

No relacionado, pero tiene un error en su plantilla, ya que está intentando acceder al atributo _meta en un queryset en lugar de un objeto. Por lo tanto, su línea de título debería ser algo así como:

 {% with objs|first as obj %} 
{% get_verbose_name obj %}
{% endwith %}