【问题标题】:Django:The QuerySet value for an exact lookup must be limited to one result using slicingDjango:精确查找的 QuerySet 值必须使用切片限制为一个结果
【发布时间】:2019-10-02 15:35:50
【问题描述】:

我正在做一个管理员可以将团队分配给经理的项目。但它不起作用,我不知道它将如何工作。因为它引发了一个错误,提示“精确查找的 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"),
    ]

这是我为经理团队准备的 views.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>

我不知道我哪里错了。

【问题讨论】:

  • 请分享您的Create_Team 模型。我猜你正在传递manager 的查询集,但需要传递一个管理器实例`

标签: django django-models django-templates django-views


【解决方案1】:

我认为这是问题所在:

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}) 传递给模板,但在模板中您试图迭代team。所以改成传递team变量:

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

【讨论】:

  • 是的,它对我有用,但我还有一个问题是团队没有在 UI 中显示
  • 所以请在这里添加您的模板。并在渲染前打印obj,以检查它是否为空。
  • 分配给经理但未在前端显示的团队
  • 我已经添加了我的模板,你能帮帮我吗
  • 如果我将该团队更改为模板中的对象会怎样
猜你喜欢
  • 2019-05-26
  • 2021-04-23
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多