Я новичок в python и django, пожалуйста, кто-нибудь может объяснить мне наследование mechanizm в классах на основе django/python? Пример здесь:Django FormView наследование
class FormViewA(FormView):
form_class = MyFormClass
template_name = 'mytemplate.html'
def get_success_url(self):
return reverse('my_url')
def form_valid(self, form):
form.save()
print "in FormViewA"
return super(FormViewA, self).form_valid(form)
class FormViewB(FormViewA):
def form_valid(self, form):
form.save()
print "in FormViewB"
return super(FormViewB, self).form_valid(form)
Если я использую FormViewB
создать форму в своих шаблонах код из form_valid
из FormViewA
по-прежнему работать, и я вижу этот вывод:
in FormViewB
in FormViewA
Объясните мне, пожалуйста, что же я отсутствует, почему код из переопределенного метода все еще работает здесь? Является ли это переопределенным, как в C++? Большое спасибо.
Хм, да, теперь я вижу похожие вопросы о 'super', будет ли он работать правильно, если я не позволю родительскому методу? В любом случае, спасибо за ваш ответ. Это помогает. –
Если я наследую «FormView», мне нужно дублировать слишком много логинов из родительского класса, я надеялся избежать этого, но лучше сделать здесь «copypaste», верно? –
Спасибо, Сельджук. –