#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.

Reply via email to