Dear all,
I have a very simple 3 page ordering process for a small online shop.
I would like to pass data from the pages via sessions.
But I run into trouble when saving in sessions via clean_data and then
trying to initiate a newform with the saved clean_data. This occurs
only when ForeignKeys are in the Game.
This is probably due to the nature foreignkeys are stored as an object
in clean_data (see below).
Is there a way around this? (eg Store id as an integer only)
Thanks for any help in advance!
>>Michael
Session:
>>> from shop.models import OrderForm
>>> import datetime
>>> d = {'date':datetime.datetime(2007,8,2,19,30,47), 'customer': 1,'coffee':1}
>>> b = OrderForm(d)
>>> b.is_valid()
True
>>> b.clean_data
{'date': datetime.datetime(2007, 8, 2, 19, 30, 47), 'customer':
<Customer: Annon
>, 'coffee': <Price: Espresso 12k>}
>>> o = b.save()
>>> o
<Order: 2007-08-02 19:30:47>
>>> o.id
4
>>> sessionvariable = b.clean_data
>>> c = OrderForm(sessionvariable)
>>> c
<django.newforms.models.OrderForm object at 0x01501EB0>
>>> c.save()
Traceback (most recent call last):
File "<console>", line 1, in ?
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\models.py", line 21, in model_save
if self.errors:
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\forms.py", line 90, in _errors
self.full_clean()
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\forms.py", line 177, in full_clean
value = field.clean(value)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\models.py", line 162, in clean
value = self.queryset.model._default_manager.get(pk=value)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\manager.py", line 73, in get
return self.get_query_set().get(*args, **kwargs)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 250, in get
obj_list = list(clone)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 108, in __iter__
return iter(self._get_data())
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 470, in _get_data
self._result_cache = list(self.iterator())
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 183, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
+ ",".join
(select) + sql, params)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\backends\util.py", line 12, in execute
return self.cursor.execute(sql, params)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\backends\sqlite3\base.py", line 93, in execute
return Database.Cursor.execute(self, query, params)
InterfaceError: Error binding parameter 0 - probably unsupported type.
>>> c
<django.newforms.models.OrderForm object at 0x01501EB0>
>>> c.is_valid()
Traceback (most recent call last):
File "<console>", line 1, in ?
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\forms.py", line 99, in is_valid
return self.is_bound and not bool(self.errors)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\forms.py", line 90, in _errors
self.full_clean()
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\forms.py", line 177, in full_clean
value = field.clean(value)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\newforms\models.py", line 162, in clean
value = self.queryset.model._default_manager.get(pk=value)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\manager.py", line 73, in get
return self.get_query_set().get(*args, **kwargs)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 250, in get
obj_list = list(clone)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 108, in __iter__
return iter(self._get_data())
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 470, in _get_data
self._result_cache = list(self.iterator())
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\models\query.py", line 183, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
+ ",".join
(select) + sql, params)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\backends\util.py", line 12, in execute
return self.cursor.execute(sql, params)
File "C:\Dokumente und Einstellungen\de1763\Program Files
\Python24\Lib\site-pa
ckages\django\db\backends\sqlite3\base.py", line 93, in execute
return Database.Cursor.execute(self, query, params)
InterfaceError: Error binding parameter 0 - probably unsupported type.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" 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-users?hl=en
-~----------~----~----~----~------~----~------~--~---