Monday, July 30, 2012

Re: Dynamic forms

On Tue, Jul 31, 2012 at 1:23 AM, Sandeep kaur <mkaurkhalsa@gmail.com> wrote:
> I want to have a form, with drop down list and then multiple select
> checkboxes dynamically filtered based on drop down selection. I have
> searched a lot but did not find a complete solution for my
> requirement. Also I want to ask that can we do this without apply java
> query ? Means if a browser doesn't support java, how would our could
> run?
>
> Help would be really appreciated.
Lets say that you need a form with a drop-down list that have dynamic
values. With Django this can be done simple and fast.
MY_CHOICES = (
('1', 'Option 1'),
('2', 'Option 2'),
('3', 'Option 3'),
)

class MyForm(forms.Form):
my_choice_field = forms.ChoiceField(choices=MY_CHOICES)

The form`s class has an __init__ method that is called on every form
load. Most of the times you skipped it in the form definition but now
you will have to use it.

def get_my_choices():
# you place some logic here
return choices_list

class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['my_choice_field'] = forms.ChoiceField(
choices=get_my_choices() )

You first call the __init__ method of the parent class(Form) using the
super keyword and then declare your dynamic fields(in this case
my_choice_field). With this code get_my_choices is called on every
form load and you will get your dynamic drop-down.

--
Satinderpal Singh
http://satindergoraya.blogspot.in/

--
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 django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment