Django:根据模型字段值显示链接

时间:2017-09-02 20:49:24

标签: python django

我希望根据名为“access_level”的UserLevels模型中的字段显示“管理员”链接。如果当前登录用户的access_level字段等于“admin”,则应显示“Admin”链接。

目前没有错误,但是每个登录用户都会显示“Admin”链接,而不会考虑access_level字段值。

HTML:

{% if user.is_authenticated and userlevels.access_level == 'admin' %}
    <a class="nav-link" href="{% url 'adminpanel:widgets' %}">Admin</a>
{% endif %}

Adminpanel app models.py:

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

    class UserLevels(models.Model):
        user = models.OneToOneField(User)

        access_level = models.CharField(max_length=5,default='user',blank=True)

        def __str__(self):
            return self.user.username

2 个答案:

答案 0 :(得分:2)

应该是:

{% if request.user.is_authenticated and request.user.userlevels.access_level == 'admin' %}
    <a class="nav-link" href="{% url 'adminpanel:widgets' %}">Admin</a>
{% endif %}

但是如果你在视图中而不是在模板中传递它会更好

答案 1 :(得分:1)

userlevel本身无效。它是用户的属性,由您创建oneToOne字段。

的事实设置

尝试

{% if user.is_authenticated and user.userlevels.access_level == 'admin' %}
   <a class="nav-link" href="{% url 'adminpanel:widgets' %}">Admin</a>
{% endif %}