FYI...

I'm having an issue with the get_or_create helper method.  Apparently
it isn't coercing parameters properly.

I've got some code that looks like this:

e = Foo(name=name, category=c, display_name=name.capitalize())

e2, created = Foo.objects.get_or_create(name=name, category=c,
display_name=name.capitalize())

The first one will work and the second fails.  The issue being that
the category is a foreign key and when creating the Foo object it uses
the id of category.  When using the get_or_create method, it passes in
the Category object as the SQL query parameter instead of the id.
Thus giving the following error:

  File "scanfoo.py", line 60, in pop_db
    e2, created = Foo.objects.get_or_create(name=name, category=c,
display_name=name.capitalize())
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/manager.py",
line 69, in get_or_create
    return self.get_query_set().get_or_create(*args, **kwargs)
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 217, in get_or_create
    return self.get(**kwargs), False
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 202, in get
    obj_list = list(clone)
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 94, in __iter__
    return iter(self._get_data())
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 412, in _get_data
    self._result_cache = list(self.iterator())
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 163, in iterator
    cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
+ ",".join(select) + sql, params)
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 12, in execute
    return self.cursor.execute(sql, params)
  File 
"/home/matt/work/vpython/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/sqlite3/base.py",
line 79, in execute
    return Database.Cursor.execute(self, query, params)
pysqlite2.dbapi2.InterfaceError: Error binding parameter 0 - probably
unsupported type.

I've put some debugging statements in to confirm this.

The problem is in query.py line 877 where field.get_db_prep_lookup is called.

I'll dig in more.  But I figured you guys would be able to whip out
this bug fix a lot faster.

Let me know if I should file a bug.

thanks

matt

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers
-~----------~----~----~----~------~----~------~--~---

Reply via email to