Opened 5 years ago
Last modified 5 years ago
#30914 closed Bug
Queryset errors on any operation — at Initial Version
Reported by: | jmarshall9120 | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 2.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I have a query set in the following view that throws an error.
The line x = workbooks_in_client.count()
throws error:
ValueError: The QuerySet value for an exact lookup must be limited to one result using slicing.
Trying to slice like x = workbooks_in_client[0]
also throws the error
here's the view
def home(request, client_name=None, workbook_name=None): user = request.user clients_in_user = Client.objects.filter(users=user) if clients_in_user.count(): client = clients_in_user.filter(clientName=client_name) \ if client_name else clients_in_user[0] workbooks_in_client = Workbook.objects.filter(client=client) x = workbooks_in_client.count() if x: workbook = workbooks_in_client.filter(workbookName=workbook_name) \ if workbook_name else workbooks_in_client[0] context = { 'user': user, 'clientList': clients_in_user, 'workbookList': workbooks_in_client, 'currentClient': client, 'currentWorkbook': workbook, } return render(request, "ClientDashboard/home.html", context)
here's the models
class Client(models.Model): users = models.ManyToManyField('User', blank=True) clientCode = models.CharField(max_length=100) clientName = models.CharField(max_length=200) def __str__(self): return self.clientName class Workbook(models.Model): client = models.ForeignKey(Client, on_delete=models.CASCADE) workbookName = models.CharField(max_length=100) workbookLink = models.CharField(max_length=1000) def __str__(self): return self.workbookName
heres the debug output
Environment: Request Method: GET Request URL: //localhost:3000/myClient/Performance%20Dashboard/ Django Version: 2.2.6 Python Version: 3.7.0 Installed Applications: ['ClientDashboard.apps.ClientdashboardConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.facebook', 'allauth.socialaccount.providers.microsoft', 'widget_tweaks'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'global_login_required.GlobalLoginRequiredMiddleware'] Traceback: File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\core\handlers\exception.py" in inner 34. response = get_response(request) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\core\handlers\base.py" in _get_response 115. response = self.process_exception_by_middleware(e, request) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\core\handlers\base.py" in _get_response 113. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\ClientDashboard\views.py" in home 21. print(workbooks_in_client) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\query.py" in __repr__ 250. data = list(self[:REPR_OUTPUT_SIZE + 1]) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\query.py" in __iter__ 274. self._fetch_all() File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\query.py" in _fetch_all 1242. self._result_cache = list(self._iterable_class(self)) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\query.py" in __iter__ 55. results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql 1087. sql, params = self.as_sql() File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\sql\compiler.py" in as_sql 489. where, w_params = self.compile(self.where) if self.where is not None else ("", []) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\sql\compiler.py" in compile 405. sql, params = node.as_sql(self, self.connection) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\sql\where.py" in as_sql 81. sql, params = compiler.compile(child) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\sql\compiler.py" in compile 405. sql, params = node.as_sql(self, self.connection) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\fields\related_lookups.py" in as_sql 130. return super().as_sql(compiler, connection) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\lookups.py" in as_sql 163. rhs_sql, rhs_params = self.process_rhs(compiler, connection) File "C:\Users\jmarshall\source\repos\myCompany\MDGOnline\env\lib\site-packages\django\db\models\lookups.py" in process_rhs 257. 'The QuerySet value for an exact lookup must be limited to ' Exception Type: ValueError at /myClient/Performance Dashboard/ Exception Value: The QuerySet value for an exact lookup must be limited to one result using slicing.
Django Version:
django.VERSION
(2, 2, 6, 'final', 0)
Python Version:
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32