Django: значение QuerySet для точного поиска должно быть ограничено одним результатом с использованием срезов - PullRequest
0 голосов
/ 15 мая 2019

Я работаю над проектом, где администратор может назначить команду менеджеру.Но это не работает, и я понятия не имею, как это будет работать.Потому что возникает ошибка: «Значение QuerySet для точного поиска должно быть ограничено одним результатом с использованием срезов».

Вот мой model.py

class manager(models.Model):
name = models.CharField(max_length= 500)
designation = models.CharField(max_length= 500)
user = models.ForeignKey(User,on_delete=models.CASCADE)
class Meta:
    permissions = [
        ("edit_task", "can edit the task"),
    ]

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

@login_required (login_url= 'have the url where it will go')
@permission_required('have the permission that is assigned by me')
def supervisor(request):
return render(request, 'manager/index-3.html')

def supervisor_team(request):
print(request.user.email)
email=request.user.email
obj= Create_Team.objects.filter(status='Accept', 
managers=manager.objects.filter(user__email=email))
return render(request, "manager/accept_team.html", {"object": obj})

вот мой шаблон

<div class="body table-responsive">
                        <table class="table table-hover">
                            <thead>
                                <tr>
                                    <th>S No.</th>
                                    <th>COMPANY NAME</th>
                                    <th>TEAM MEMBER</th>
                                    <th>EMAIL</th>
                                </tr>
                            </thead>
                            <tbody>

                                    {%for object in team%}
                                <tr>
                                        <form id="form_id" method="POST" action = "#">
                                            {% csrf_token %}

                                    <th scope="row"> {{ forloop.counter }}</th>
                                    <td>{{object.company_name}}</td>
                                    <td>{{object.team_member}}</td>
                                    <td>{{object.email}}</td>
                                    <td>
                                </tr>

                                {% endfor %}

                            </tbody>
                        </table>
                    </div>

Понятия не имею, где я не прав. here is the image of the error

1 Ответ

2 голосов
/ 15 мая 2019

Я думаю, что это проблема:

obj= Create_Team.objects.filter(status='Accept', 
managers=manager.objects.filter(user__email=email))

если вы хотите фильтровать по одному менеджеру, вы должны использовать get вместо filter:

obj= Create_Team.objects.filter(status='Accept', 
managers=manager.objects.get(user__email=email))

Но если вы хотите фильтровать по нескольким менеджерам, вам нужно использовать __in:

obj= Create_Team.objects.filter(status='Accept', 
managers__in=manager.objects.filter(user__email=email))

Также вы передаете {"object": obj}) в шаблон, но в templare вы пытаетесь перебрать team. Так что измените его, чтобы передать team переменную:

return render(request, "manager/accept_team.html", {"team": obj})
...