2017-09-02 81 views
0

我希望「Admin」鏈接根據名爲「access_level」的我的UserLevels模型中的字段顯示。如果當前登錄用戶的access_level字段等於「admin」,則應顯示「Admin」鏈接。Django:根據模型字段值顯示鏈接

目前沒有任何錯誤,但是「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應用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

應該是:

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

而且是更好,如果你傳遞你的觀點,而不是在模板

+0

這個工作謝謝 – Garrett

+0

請接受並投票了:) –

+0

我會的,但它讓我等待4分鐘做到這一點 – Garrett

1

userlevel是不是對自己有效。它是用戶的一個屬性,由您創建了一個oneToOne字段來設置。

嘗試

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