gpt4 book ai didi

python - Django:过滤器()不返回任何东西

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:25 25 4
gpt4 key购买 nike

当我尝试使用 get() 时,它给我一个返回多个对象的错误。我试过过滤器,但它什么也没返回。这是我的代码:

latest_poll_list = Score.objects.filter(user=user.id)

它不返回任何东西。希望这只是一个语法错误;不是我必须重新编写程序的错误。提前致谢。

得到:

Environment:


Request Method: GET
Request URL: http://localhost:8000/scores/

Django Version: 1.3
Python Version: 2.5.5
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'es']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/local/lib/python2.5/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/julian/Documents/EpicScore/es/views.py" in scoreindex
30. latest_poll_list = Score.objects.get(user=request.user)
File "/usr/local/lib/python2.5/site-packages/django/db/models/manager.py" in get
132. return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.5/site-packages/django/db/models/query.py" in get
351. % (self.model._meta.object_name, num, kwargs))

Exception Type: MultipleObjectsReturned at /scores/
Exception Value: get() returned more than one Score -- it returned 3! Lookup parameters were {'user': <User: jmeyer>}

最佳答案

回溯中的 get 调用不等同于问题中的 filter 调用:

latest_poll_list = Score.objects.get(user=request.user)
!=
latest_poll_list = Score.objects.filter(user=user.id)

在第一个中,您将传递一个对象 user 作为参数,在第二个中,您将传递 id 值(可能是一个整数)。此外,如果没有看到您的其余代码,我们不知道 userrequest.user 是否相同。

如果您只是将 get 换成 filter,您应该会得到预期的结果:

latest_poll_list = Score.objects.filter(user=request.user)

否则你可以这样做:

latest_poll_list = Score.objects.filter(user__id=request.user.id)

如果您传入 user 对象,查询会在内部将 user.id 与数据库列 user_id 进行比较对于 ForeignKey 实际存储。

关于python - Django:过滤器()不返回任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com