У меня есть представление на основе класса, которое должно динамически выбирать форму, основанную на имени животного.Переопределение метода get_form_class() Django throws string error
UpdateAnimalView(FormMixin, DetailView):
def get_form_class(self):
SOME_FORMS = {
"Dog" : "UpdateDogForm",
"Cat" : "UpdateCatForm",
"Frog" : "UpdateFrogForm",
}
animal = object
animal_type = object.type #returns "Dog", "Cat" or "Frog"
form_class_name = SOME_FORMS[animal_type]
#form_class_name now takes the values "UpdateDogForm"
#, "UpdateCatForm" or "UpdateFrogFrom"
return form_class_name
Однако, когда я запускаю это, кажется, не читать form_class
но как string
и Django выдает эту ошибку:
'str' object is not callable
отслеживающий происходит от get_context_data
. Я делаю вывод стек вызовов выглядят следующим образом:
def get_form(self, form_class=None):
form = super(UpdateAnimalView, self).get_form()
return form
def get_context_data(self, **kwargs):
context = super(UpdateAnimalView, self).get_context_data(**kwargs)
context['form'] = self.get_form()
return context
Как я могу вернуть form_class
в качестве правильного типа данных, а не в виде строки?
Wow это явно любителем ошибка. Спасибо за отладку. – bryansis2010