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.

Reply via email to