hmmm, it appears to sort of work with I add the .id attribute
category.  But on another object that also uses a foreign key, it
won't work....

It still seems like a bug and is confusing.  Why should the interface
change on a convenience method?  (I don't want to know about the id at
all if I'm using the ORM)

On 6/12/06, Ian Holsman <[EMAIL PROTECTED]> wrote:
>
> hmm..
> I just checked my code and I use the 'id' fields
>
>      obj, created = ObjectHourUserCounter.objects.get_or_create
> ( content_type__id__exact = ct_id, object_id = object.id,
> effective_date= this_hour,
>              user__id__exact = user_id, session_key = session,
>              defaults={'views':1, 'content_type_id':ct_id,
> 'user_id':user_id, 'session_key': session   } )
>
> and it seems to work.
>
> regards
> On 13/06/2006, at 9:38 AM, m h wrote:
>
> >
> > Ian-
> >
> > thanks for the swift response
> >
> > e , created = Foo.objects.get_or_create(name=name, category=c,
> > display_name=dname, description=desc, homepage=home, logo_name="",
> > small_logo_name="",defaults={"category":c})
> >
> > fails with the same error....
> >
> > I'll file a bug
> >
> > On 6/12/06, Ian Holsman <[EMAIL PROTECTED]> wrote:
> >>
> >> Hi mh.
> >> I had a similar issue, and my work around was to put the category
> >> into the defaults section (as well)
> >>
> >> e2, created = Foo.objects.get_or_create(name=name, category=c,
> >> defaults={ display_name=.., category=c } )
> >>
> >> but you should probably raise a bug for this.
> >>
> >> regards
> >> Ian.
> >>
> >> On 13/06/2006, at 9:24 AM, m h wrote:
> >>
> >>>
> >>> 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