Django - подробное имя из тега шаблона - PullRequest
2 голосов
/ 17 октября 2011

Мне нужно отобразить несколько моделей названий и объектов в шаблоне

Вот мой просмотр

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 Ответ

4 голосов
/ 17 октября 2011

Вы пытаетесь получить модель из первого объекта в списке. Таким образом, если этот объект не существует, вы ничего не получите.

Попробуйте использовать вместо этого набор запросов:

{{ get_verbose_name objs }}

@register.simple_tag
def get_verbose_name(queryset):
  return queryset.model._meta.verbose_name_plural
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...