Django: Как отображать некоторые объекты только для определенных пользователей - PullRequest
1 голос
/ 07 мая 2019

Я новичок в django и работаю над проектом, в котором администратору нужно назначить команду менеджеру, а когда администратор назначит команду менеджеру, это будет показано только на информационной панели этого менеджера. Я понятия не имею, как я могу это сделатьэтот.Пожалуйста, если кто-то может помочь, пожалуйста, помогите мне.

вот мой .html файл для администратора, откуда администратор может назначить команду менеджеру.

<th>S No.</th>
<th>COMPANY NAME</th>
<th>TEAM MEMBER</th>
  <th>Assign TEAM</th>
</tr>
</thead>
 <tbody>
 {%for team in object%}
   <tr>
     <form id="form_id" method="POST" action = "{% url 'accept' %}">
       {% csrf_token %}
      <th scope="row"> {{ forloop.counter }}</th>
       <td>{{team.company_name}}</td>
        <td>{{team.team_member}}</td>
          <td>
             <select name="manager_{{manager.id}}">
              {% for manager in managers %}
                <option value ="{{manager.id}}">{{manager.name}}</option>
              {% endfor %}                                   
               </select>
           </td>
             <td>
                 <input class="btn btn-raised btn-primary btn-round waves-effect" type="submit" value="Assign">
                            </td>
            </tr>
             {% endfor %}

вот моя модель для команды и менеджера:

class Create_Team(models.Model):
 first_name = models.CharField(max_length= 50)
 last_name = models.CharField(max_length= 50)
 company_name = models.CharField(max_length= 100)
 address = models.CharField(max_length= 1000)
 state = models.CharField(max_length= 100)
 city = models.CharField(max_length= 100)
 status = models.CharField(max_length= 30)
 managers = models.ForeignKey('manager', on_delete = models.SET_NULL, null=True)

class manager(models.Model):
 name = models.CharField(max_length= 500)
 designation = models.CharField(max_length= 500)

вот мой файл views.py для менеджера и откуда администратор принимает запрос:

def accept(request):
obj= Create_Team.objects.filter(status='Accept') 
managers = manager.objects.all()
if request.method == 'POST':
   createteam = Create_Team()
   createteam_id = int(request.POST.get('team', 1))
   manager_id = int(request.POST.get('manager', 1))
   createteam = Create_Team.objects.get(pk=createteam_id)
   createteam.manager = manager.objects.get(pk=manager_id)
   createteam.save()

  return render(request, "admin/accept.html", {"object": obj,  "managers": managers})

def superior(request):
return render(request, 'manager/index-3.html')

вот мои представления, где я проверяю, является ли пользовательАдминистратор или пользователь или менеджер

def login(request):
if request.method =='POST':
    # print(request.POST)
    username = request.POST['username']
    password = request.POST['password']

    user = auth.authenticate(username=username, password=password)

    if user is not None:
        auth.login(request, user)
        print (user.has_perm('app.edit_task'))
        # return redirect('index')

        if user.is_superuser:
            return redirect('master')

        # elif user.has_perm('app.edit_task'):
        #     return redirect('manager')
        elif user.is_staff:
            return redirect('manager')
        else:
            return redirect('index')

    else:
        messages.error(request, 'Invalid Credentials')
        return redirect('login')    
else: 
    return render(request, 'vadash/sign-in.html')

Я хочу, чтобы всякий раз, когда администратор нажимал кнопку назначения, эта команда отображалась для этого менеджера. Пожалуйста, помогите мне.Но этот код не обновляет базу данных.

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Создание пользовательского пользователя Модель для проверки того, вошел ли пользователь в систему, является администратором, администратором или членом.

Вы можете создать пользовательского пользователя различными способами. Пожалуйста, проверьте ссылку:

https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

Вы можете задать логические поля, такие как is_manager, is_member и т. Д.

После определения пользовательской модели пользователя вы можете проверить, вошел ли пользователь в систему как manager, admin и т. Д., Используя

request.user.is_manager == True
0 голосов
/ 07 мая 2019

После входа в систему менеджера убедитесь, что вы получили данные о менеджере, который вошел в систему. И передайте эти данные в представление

...