#24986: Selecting distinct on lower() function throws AttributeError("'Func'
object
has no attribute 'column'")
----------------------------------------------+----------------------------
Reporter: wbar | Owner: nobody
Type: Bug | Status: new
Component: Database layer (models, ORM) | Version: 1.8
Severity: Release blocker | Keywords: F(), ORM,
| distinct
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------------------+----------------------------
I have simple table:
{{{
class Author(models.Model):
name = models.CharField(max_length=40)
}}}
I want to write Query using Django ORM to be similar to:
{{{
SELECT DISTINCT LOWER(name) from my_app_author;
}}}
I finally ended with:
{{{
Author.objects.annotate(
name_lower=Func(F('name'), function='lower')
).distinct('name_lower')
}}}
But I'm receiving error:
{{{
Traceback (most recent call last):
File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py",
line 138, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py",
line 162, in __iter__
self._fetch_all()
File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py",
line 965, in _fetch_all
self._result_cache = list(self.iterator())
File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py",
line 238, in iterator
results = compiler.execute_sql()
File "/opt/venv/lib/python3.4/site-
packages/django/db/models/sql/compiler.py", line 829, in execute_sql
sql, params = self.as_sql()
File "/opt/venv/lib/python3.4/site-
packages/django/db/models/sql/compiler.py", line 381, in as_sql
distinct_fields = self.get_distinct()
File "/opt/venv/lib/python3.4/site-
packages/django/db/models/sql/compiler.py", line 545, in get_distinct
result.append("%s.%s" % (qn(alias), qn2(target.column)))
AttributeError: 'Func' object has no attribute 'column'
}}}
but when i write:
{{{
Author.objects.annotate(
name_lower=Func(F('name'), function='lower')
).distinct('something')
}}}
I'm receiving an error:
{{{
django.core.exceptions.FieldError:
Cannot resolve keyword 'something' into field.
Choices are: id, name, name_lower, src_id
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24986>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/047.22146994d6bc46c12403195d571dc8bf%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.