Я создаю сайт Django. Мне нужно моделировать различные категории продуктов, такие как телевизоры, ноутбуки, женская одежда, мужская обувь и т. Д.
Поскольку разные категории продуктов имеют разные атрибуты, каждая категория имеет свою отдельную модель: TV, Laptop, WomensApparel, MensShoes,
и т. Д.
И для каждой модели я создал ModelForm. Следовательно, у меня есть TVForm, LaptopForm, WomensApparelForm, MensShoesForm
и т. Д.
Пользователи могут вводить сведения о продукте, выбирая категорию продукта через многоуровневые раскрывающиеся списки. После того, как пользователь выбрал категорию продукта, мне нужно отобразить соответствующую форму продукта.
Очевидный способ сделать это - использовать гигантскую if-elif
структуру:
# category is the product category selected by the user
if category == "TV":
form = TVForm()
elif category == "Laptop":
form = LaptopForm()
elif category == "WomensApparel":
form = WomensApparelForm()
...
К сожалению, может быть сотни, если не больше категорий. Таким образом, вышеописанный метод будет подвержен ошибкам и утомителен.
Можно ли каким-либо образом использовать значение переменной category
для непосредственного выбора и инициализации соответствующего ModelForm
, не прибегая к гигантскому if-elif
выражению?
Что-то вроде:
# This doesn't work
model_form_name = category + "Form"
form = model_form_name()
Есть ли способ сделать это?