On Sep 13, 11:06 pm, Doug B <[EMAIL PROTECTED]> wrote:
> Could you just use a collection of forms with different prefixes...

Hi Doug,

that's a good idea... but i'm still following the meta-programming
route... i tried with a form factory function which is conceptually
closer to what i thought but still doesn't work.

This is what i tried:

def room_form_factory(new_data):
    room_type = IntegerField(widget=Select(choices=BEDROOM_TYPES))
    room_price = IntegerField()
    is_shared = BooleanField(required=False)

    class RoomShared(Form):
        pass

    for k in new_data:
        postfix = k[-3:]

        if k.startswith('room_type'):
            setattr(RoomShared, 'room_type_%s' % postfix, room_type)
        elif k.startswith('room_price'):
            setattr(RoomShared, 'room_price_%s' % postfix, room_price)
        elif k.startswith('is_shared'):
            setattr(RoomShared, 'is_shared_%s' % postfix, is_shared)

    return RoomShared(new_data)

And this is my view code:

def add_share_room_details(request, object_id):

    if request.method == 'POST':
        new_data = request.POST.copy()
        form = room_form_factory(new_data)

        d = vars(form)
        for kw in d:
            print "%s = %s" % (kw, d[kw])

        if form.is_valid():
            return HttpResponse("Form is valid")
        else:
            return HttpResponse("Form NOT valid")
    else:
        pass

    return render_to_response("house_share_room.html")

Any other idea?

Thanks,
Lorenzo


--~--~---------~--~----~------------~-------~--~----~
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?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to