我希望根据名为“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
答案 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 %}