On 3/30/06, yml <[EMAIL PROTECTED]> wrote:
>
> Hello djangonauts,
>
> I wrote my first manipulator and there is still some part that I am not
> understanding.
> I have the feeling that I am missing something obvious in the save
> function of my manipulator but I am unable to improve it.
>
> I would be glad if someone could explain me how to set_localisation to
> my "Profile" ?
> I am a bit lost there.
> Thank you for your help
>
>
> =======================
> Here it is the error message I am getting:
> =========================
> TypeError at /profiles/create_manip/
> list objects are unhashable
> Request Method:         POST
> Request URL:    http://localhost:8000/profiles/create_manip/
> Exception Type:         TypeError
> Exception Value:        list objects are unhashable
> Exception Location:
>         
> c:\python24\lib\site-packages\django-0.91-py2.4.egg\django\core\meta\__init__.py
> in method_set_many_to_many, line 1138
>
> =====================
> Here it is my manipulator
> =====================
> class announceManagerProfileManipulator(formfields.Manipulator):
>     def __init__(self, pk=None):
>         self.fields = (
>             #formfields.SelectField(field_name='user',
> is_required=True, choices=[('','-------')] + [(o.id, o) for o in
> users.get_list()]),
>             formfields.TextField(field_name='pseudo', is_required=True,
> maxlength=30),
>             #formfields.RadioSelectField(field_name='gender',
> radio_admin=True, choices=[('','-------')] + [(o.id, o) for o in
> genders.get_list()]),
>             formfields.RadioSelectField(field_name='gender',
> choices=[(o.id, o) for o in genders.get_list()]),
>             formfields.TextField(field_name='address', maxlength=300),
>             formfields.TextField(field_name='phonenumber',
> maxlength=10),
>
> formfields.CheckboxField(field_name='want_to_publised_personal_info'),
>             #formfields.SelectField(field_name='memberShipLevel',
> is_required=True, radio_admin=True, choices=[('','-------')] + [(o.id,
> o) for o in membershiplevels.get_list()]),
>             formfields.RadioSelectField(field_name='memberShipLevel',
> is_required=True, choices=[(o.id, o) for o in memberships.get_list()]),
>             formfields.SelectMultipleField(field_name='localisation',
> choices=[(o.id, o) for o in localisations.get_list()], size=5, ),
>         )
>
>     def save(self, new_data, current_user):
>
>         temp = Profile(
>             user=current_user,
>             pseudo=new_data['pseudo'],
>
> #want_to_publised_personal_info=new_data['want_to_publised_personal_info'],
>
> memberShipLevel=memberships.get_object(pk=new_data['memberShipLevel']),
>             want_to_publised_personal_info=False,
>         )
>         if new_data['localisation']:
>             temp.set_localisation([list(new_data['localisation'])])
> ###  <=== This is where my problem is locating
>         if new_data['gender']:
>             temp.gender=
> genders.get_object(id__exact=new_data['gender'])
>         temp.address = new_data['address']
>         temp.phonenumber = new_data['phonenumber']
>         if new_data['want_to_publised_personal_info']:
>             temp.want_to_publised_personal_info=
> new_data['want_to_publised_personal_info']
>         temp.is_default_profile=True
>         temp.save()
>         return temp
>
>

It seems that you are using 0.91 version. And you want to deal
manytomany field before temp object saved. I'm using M-R branch now.
But I do these things after saving the temp object. And I see that:

temp.set_localisation([list(new_data['localisation'])])

And why you put list(new_data['localisation']) to [] I don't
understand. I think

temp.set_localisation(new_data['localisation'])

maybe enough. You can try again.

--
I like python!
My Blog: http://www.donews.net/limodou
My Site: http://www.djangocn.org
NewEdit Maillist: http://groups.google.com/group/NewEdit

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

Reply via email to