Итак, я пишу что-то, и я наткнулся на контрольно-пропускной пункт о том, как это сделать (и как правильно делать вещи).ТАК, объяснение ситуации поможет лучше понять проблему, и, надеюсь, кто-то узнает ответ :) Вот так:
По сути, я пишу некоторые динамические формы на Python (точнее, Django) -Я использую фабрику форм для создания формы, которую я хочу сделать.Это все прекрасно, но я до сих пор определял свойства формы жестко закодированным способом, в основном сопоставляя свойство определенной форме (ChoiceField, Boolean и т. Д.).НО, что я хотел бы вместо жесткого кодирования этих значений, по сути, динамически создавать словарь свойств, основываясь на том, какую информацию я передаю ...
У меня в основном есть массив "опций", и вотДва метода, которые я рассматриваю:
- Есть функция для моей модели / объекта "options", которая будет иметь серию if / elses.Как:
def get_property():
if value = "artifact": #artifact being one option
return form.BooleanField(label="blah")
else if value = "environment": #environment being another type of option
return form.ChoicesField(label="blah")
etc...
Используйте очень полиморфный подход.Таким образом, я имею в виду создание объекта на основе моего объекта «option» и буду создавать новый объект на основе параметра.Скажите, может быть, что-то вроде:
class Base_Property():
value = ""
def __init__(self, option):
value = form.BooleanField()
class Artifact_Property(Base_Property):
def __init__(self, option):
Base_Property.__init__(self, option)
value = form.ChoiceField(choices=some_choices_array())
Если вариант второй - это путь, может кто-нибудь объяснить, как я могу создать объект динамически на основе переменной?Например, сопоставление имени значения (скажем, Артефакта с соответствием Artifact_Property).
Большое спасибо за помощь!Мне действительно интересно посмотреть, что будет правильным образом - возможно, это вызовет дискуссию:)
-Shawn