You can always pre-define them all in a dict: cat2form = {'TV': TVForm, 'Laptop': LaptopForm}
model_form = cat2form[category] model_form_instance = model_form() This way you forms don't have to follow a strict naming convention. -- Michael <mhall...@gmail.com> On Sun, 2010-10-03 at 01:04 -0700, Andy wrote: > I need to model many different product categories such as TV, laptops, > women's apparel, men's shoes, etc. > > Since different product categories have different product attributes, > each category has its own separate Model: TV, Laptop, WomensApparel, > MensShoes, etc. > > And for each Model I created a ModelForm. Hence I have TVForm, > LaptopForm, WomensApparelForm, MensShoesForm, etc. > > Users can enter product details by selecting a product category > through multi-level drop-down boxes. Once a user has selected a > product category, I need to display the corresponding product form. > > The obvious way to do this is to use a giant `if-elif` structure: > > # category is the product category selected by the user > if category == "TV": > form = TVForm() > elif category == "Laptop": > form = LaptopForm() > elif category == "WomensApparel": > form = WomensApparelForm() > ... > > Unfortunately there could be hundreds if not more of categories. So > the above method is going to be error-prone and tedious. > > Is there any way I could use the value of the variable `category` to > directly select and initialize the appropriate `ModelForm` without > resorting to a giant `if-elif` statement? > > Something like: > > # This doesn't work > model_form_name = category + "Form" > form = model_form_name() > > Is there any way to do this? > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.