#30652 closed Bug (duplicate)
ResolvedOuterRef object has no attribute contains_aggregate.
Reported by: | Dmitry Mugtasimov | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
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
queryset.annotate( has_role=Exists( JobTitle.objects.annotate( title_vector=SearchVector( OuterRef('title'), config=SIMPLE_PG_SEARCH_CONFIGURATION) ).filter( title_vector=SearchQuery( F('name'), config=SIMPLE_PG_SEARCH_CONFIGURATION) ) ) )
results in
'ResolvedOuterRef' object has no attribute 'contains_aggregate' Request Method: GET Request URL: http://127.0.0.1:8000/admin/jobs/job/ Django Version: 2.2.2 Exception Type: AttributeError Exception Value: 'ResolvedOuterRef' object has no attribute 'contains_aggregate' Exception Location: /usr/local/lib/python3.7/site-packages/django/db/models/expressions.py in <genexpr>, line 213 Python Executable: /usr/local/bin/python Python Version: 3.7.3 Python Path: ['/code', '/code', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages'] Server time: Mon, 22 Jul 2019 09:22:47 +0000
Environment: Request Method: GET Request URL: http://127.0.0.1:8000/admin/jobs/job/ Django Version: 2.2.2 Python Version: 3.7.3 Installed Applications: ['core', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'django.contrib.postgres', 'allauth', 'allauth.account', 'drf_yasg', 'rest_auth', 'rest_auth.registration', 'rest_framework', 'rest_framework.authtoken', 'colorful', 'gm2m', 'explorer', 'allauth.socialaccount', 'accounts', 'questions', 'colleges', 'geo', 'jobs', 'advices', 'referral'] 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'] Traceback: File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request) File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 115. response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 113. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.7/contextlib.py" in inner 74. return func(*args, **kwds) File "/usr/local/lib/python3.7/site-packages/django/contrib/admin/options.py" in wrapper 606. return self.admin_site.admin_view(view)(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapped_view 142. response = view_func(request, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 44. response = view_func(request, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/contrib/admin/sites.py" in inner 223. return view(request, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapper 45. return bound_method(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapped_view 142. response = view_func(request, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/contrib/admin/options.py" in changelist_view 1672. cl = self.get_changelist_instance(request) File "/usr/local/lib/python3.7/site-packages/django/contrib/admin/options.py" in get_changelist_instance 744. sortable_by, File "/usr/local/lib/python3.7/site-packages/django/contrib/admin/views/main.py" in __init__ 45. self.root_queryset = model_admin.get_queryset(request) File "/code/jobs/admin.py" in get_queryset 76. return queryset.annotate_with_has_role() File "/code/jobs/models/job.py" in annotate_with_has_role 68. config=SIMPLE_PG_SEARCH_CONFIGURATION) File "/usr/local/lib/python3.7/site-packages/django/db/models/manager.py" in manager_method 82. return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py" in annotate 1059. if alias in annotations and annotation.contains_aggregate: File "/usr/local/lib/python3.7/site-packages/django/utils/functional.py" in __get__ 80. res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python3.7/site-packages/django/db/models/expressions.py" in contains_aggregate 213. return any(expr and expr.contains_aggregate for expr in self.get_source_expressions()) File "/usr/local/lib/python3.7/site-packages/django/db/models/expressions.py" in <genexpr> 213. return any(expr and expr.contains_aggregate for expr in self.get_source_expressions()) Exception Type: AttributeError at /admin/jobs/job/ Exception Value: 'ResolvedOuterRef' object has no attribute 'contains_aggregate'
Change History (9)
comment:1 by , 5 years ago
Component: | Uncategorized → Database layer (models, ORM) |
---|---|
Resolution: | → duplicate |
Status: | new → closed |
Summary: | ResolvedOuterRef object has no attribute contains_aggregate → ResolvedOuterRef object has no attribute contains_aggregate. |
Type: | Uncategorized → Bug |
Version: | 2.2 → master |
comment:2 by , 5 years ago
@felixxm what was the reason for not reopening the duplicate along with closing this issue? I saw the https://code.djangoproject.com/ticket/28621 , but it appears not fixed or not fully fixed in Django 2.2. Just closing this one without reopening the original issue simply hides the issue.
comment:3 by , 5 years ago
This fix doesn't qualify for a backport, hence it will be solved in Django 2.2.
comment:4 by , 5 years ago
Please, resolve my misunderstanding Django 2.2 has already been released and this bug is present at least in Django 2.2.2. What do you mean by "it will be solved in Django 2.2"?
comment:5 by , 5 years ago
Ahh, sorry typo, "...it will not be solved in Django 2.2". This patch doesn't qualify for a backport.
comment:6 by , 5 years ago
I am even more confused now. Do you mean it is decided to keep this bug in Django 2.2 and future versions? If not and patch from https://code.djangoproject.com/ticket/29142 can't be applied then it means that this a different bug that should be tracked separately from https://code.djangoproject.com/ticket/29142 . What do I get wrong?
comment:7 by , 5 years ago
First of all, an issue that you described is the same as issue fixed in #29142. That's why I marked this as a duplicate. Secondly, fix is included in Django 3.0 (currently in development) and will not be backport to the Django 2.2 because it doesn't qualify to a backport due to our backport policy.
comment:8 by , 5 years ago
Thank you for clarification. So the only way I can get it fixed is either downgrade to Django 1.11 or upgrade to Django 3.x (because it will not be backported to any Django 2.x series)?
comment:9 by , 5 years ago
Django 1.11 is also affected by this issue, you can check our backport policy in docs.
Duplicate of #28621.