类型 'QuerySet' 的参数不是可迭代的 Django 错误



在我的网络应用程序中,我有一个朋友功能,但其中一个if语句会产生错误

这是我的UserProfileInfo型号

class UserProfileInfo(models.Model):
connection = models.ManyToManyField(User,blank=True,related_name='follow_profile')

现在我的观点是:

def friend_actions(request,username=None):
current_user = request.user.userprofileinfo
user = request.user
# username = get("username")
username = User.objects.get(username=username)
other_user = get_object_or_404(UserProfileInfo,user__username=username)
# other_user = UserProfileInfo.objects.get(username=username)
url = other_user.get_absolute_url()
if other_user in current_user.connection.all():
current_user.connection.remove(other_user)
else:
current_user.connection.add(other_user)
return HttpResponseRedirect(url)

但是,这会产生以下错误:

类型为"QuerySet"的

参数不可迭代

完整回溯

Traceback:
File "C:UsersUser.virtualenvsinterests-site-Ho6yLlHElibsite-packagesdjangocorehandlersexception.py" in inner
34.             response = get_response(request)
File "C:UsersUser.virtualenvsinterests-site-Ho6yLlHElibsite-packagesdjangocorehandlersbase.py" in _get_response
115.                 response = self.process_exception_by_middleware(e, request)
File "C:UsersUser.virtualenvsinterests-site-Ho6yLlHElibsite-packagesdjangocorehandlersbase.py" in _get_response
113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:UsersUserinterests-siteinterests-drfmainappviews.py" in friend_actions
453.     if other_user in current_user.connection.all():
Exception Type: TypeError at /mainapp/profile/donnellan0007/connect/
Exception Value: argument of type 'QuerySet' is not iterable

我想知道如何才能阻止这个错误的发生。一整天都在困扰我

这似乎是一个不时出现的错误,也就是Heisenbug!

QuerySet确实是一个可迭代的(https://github.com/django/django/blob/master/django/db/models/query.py#L271)

Django的论坛有一些关于这个的信息-

https://code.djangoproject.com/ticket/26600https://github.com/PyCQA/pylint-django/issues/117

一般来说,问题似乎是因为iter内部抛出了异常(StopIteration除外(。

您可以使用以下路线之一-

  1. 强制查询集列出(不推荐(

  2. 使用条件筛选连接。在您的情况下,使用过滤器搜索连接中的其他用户(_U(

  3. 返回values_list而不是Queryset,并对其执行"in"。

相关内容

  • 没有找到相关文章

最新更新