#24859: UUIDField does not Properly Raise TyperError
-------------------------------+--------------------
     Reporter:  cancan101      |      Owner:  nobody
         Type:  Bug            |     Status:  new
    Component:  Uncategorized  |    Version:  1.8
     Severity:  Normal         |   Keywords:
 Triage Stage:  Unreviewed     |  Has patch:  0
Easy pickings:  0              |      UI/UX:  0
-------------------------------+--------------------
 I have two models one with an int pk and one with a UUIDField pk:


 {{{
 class Bar(models.Model):
     id = models.UUIDField(primary_key=True, default=uuid4)

 class Bar2(models.Model):
     pass
 }}}

 If I try to get these using a value of {} they fail differently. The model
 with the int pk:

 {{{
 >>> Bar2.objects.all().get(pk={})
 TypeError: int() argument must be a string or a number, not 'dict'
 }}}


 whereas:

 {{{
 >>> Bar.objects.all().get(pk={})
 Traceback (most recent call last):
   File "<input>", line 1, in <module>
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/models/query.py", line 328, in get
     num = len(clone)
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/models/query.py", line 144, in __len__
     self._fetch_all()
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/models/query.py", line 965, in _fetch_all
     self._result_cache = list(self.iterator())
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/models/query.py", line 238, in iterator
     results = compiler.execute_sql()
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/models/sql/compiler.py", line 840, in execute_sql
     cursor.execute(sql, params)
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/backends/utils.py", line 79, in execute
     return super(CursorDebugWrapper, self).execute(sql, params)
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/backends/utils.py", line 64, in execute
     return self.cursor.execute(sql, params)
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/utils.py", line 97, in __exit__
     six.reraise(dj_exc_type, dj_exc_value, traceback)
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/backends/utils.py", line 64, in execute
     return self.cursor.execute(sql, params)
   File "/Users/alex/.virtualenvs/TestPG/lib/python2.7/site-
 packages/django/db/backends/sqlite3/base.py", line 318, in execute
     return Database.Cursor.execute(self, query, params)
 InterfaceError: Error binding parameter 0 - probably unsupported type.
 }}}

 This inconsistency leads to issues like: https://github.com/tomchristie
 /django-rest-framework/issues/2970

--
Ticket URL: <https://code.djangoproject.com/ticket/24859>
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 django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.f5ff70ab1d8fa7ad1903fc671a31623a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to