如何在模板文件中打印模型项?

时间:2015-02-03 15:01:21

标签: django django-templates

我想在模板文件中显示我有多少用户,有多少用户选择了英语语言考试

如何在管理模板文件中显示此信息? (base.html)我尝试过这样的事情:

{{users.count()}}

我添加了一个应用程序" Userprofile"这是用户可以选择考试语言的表格

class UserProfile(models.Model):
    JEZYK = (
        ('DE', 'niemiecki'),
        ('FR', 'francuski'),
        ('EN', 'angielski'),
    )
    jezyk_egzaminu = models.CharField(max_length=6, choices=JEZYK, verbose_name='jezyk')

如何在模板文件中显示有多少用户选择了' EN'' angielski'选项?

谢谢Catavaran我试过这个解决方案,但是我做错了:(

我在主项目应用程序中保存了一个文件" aplikacja" (aplikacja / aplikacja)

As you can see at the photo

我在base.html中添加了

{%load mytags%}

<div>Total users: {% user_count %}</div>
<div>English users: {% user_count 'EN' %}</div>

我收到错误,因为返回/ admin / site

异常类型:TemplateSyntaxError 例外值:

  

&#39; mytags&#39;不是有效的标记库:模板库mytags不是   发现,试过   django.templatetags.mytags,django.contrib.admin.templatetags.mytags,django.contrib.staticfiles.templatetags.mytags

1 个答案:

答案 0 :(得分:2)

将以下上下文传递给模板:

{'users': UserProfile.objects.all(),
 'en_users': UserProfile.objects.filter(jezyk_egzaminu='EN')}

然后调用count()方法:

<div>Total users: {{ users.count }}</div>
<div>English users: {{ en_users.count }}</div>

如果您想在管理员base.html中获取用户数,那么您必须创建custom template tag

from django import template
from myapp.models import UserProfile

register = template.Library()

@register.simple_tag
def user_count(lang=None):
    users = UserProfile.objects.all()
    if lang:
        users = users.filter(jezyk_egzaminu=lang)
    return users.count()

此代码应位于profil/templatetags/mytags.py文件中。并且不要忘记创建空的profil/templatetags/__init__.py文件。 See the docs for code layout

base.html

中使用此模板标记
{% load mytags %}

<div>Total users: {% user_count %}</div>
<div>English users: {% user_count 'EN' %}</div>