django, кто избыточные данные из моделей и пользователь как условный в шаблонах - PullRequest
0 голосов
/ 05 мая 2019

У меня есть profileinfo модель, которая связана с моделью пользователя.Есть два типа пользователя ученик и учитель.Я хочу отобразить ссылку «добавить курсы», если пользователь прошел проверку подлинности, а тип пользователя - «Учитель».если нет, ссылка не должна отображаться на панели навигации

Я попробовал следующий код в шаблонах

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
  </head>
  <body>
    <div class="container">
      <nav class="navbar navbar-default">
        <div class="container-fluid">
          <div class="navbar-header">
            <a class="navbar-brand" href="{% url 'index'%}">YFEA Academy</a>
          </div class= "nav navbar-nav-right">
          {% if user.is_authenticated and user.ProfileInfo.UserType == 'Teacher' %}
          <ul class="nav navbar-nav">
            <li><a href="#">Add Courses</a></li>
          </ul>
          {%endif%}
          {% if user.is_authenticated %}
          <ul class="nav navbar-nav navbar-right">
            <li><a href="{% url 'app:logout'%}">Logout</a></li>
          </ul>

          {% else%}
          <ul class="nav navbar-nav navbar-right">
            <li><a href="{% url 'app:register'%}">Register</a></li>
            <li><a href="{% url 'app:login'%}">login</a></li>
          </ul>
          {%endif%}
        </div>
      </nav>

    {%block body%}

    {% endblock %}
  </div>
  </body>
</html>

class UserProfile(models.Model):
    user = models.ForeignKey(User ,related_name = 'ProfileInfo')
    choices= (('S','Student'),('T','Teacher'))
    UserType = models.CharField(max_length = 50 , choices = choices)
    picture = models.FileField(upload_to = 'media', default = None)

1 Ответ

0 голосов
/ 05 мая 2019
  1. У вас не должно быть смешанных соглашений об именах - конвертируйте все атрибуты в нижний регистр. То же самое для имен отношений.

  2. user = models.ForeignKey, я полагаю, это поле OneToOne на самом деле

  3. user_type, который принимает значения только из «выборов», на самом деле хранит значение , а не название / описание / отображаемое имя. Которые: 'S' и 'T'. Поэтому сравнение с «Учителем» никогда не даст True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...