Skip to main content
 首页 » 编程设计

python之django:子类 FormView 两次并覆盖 form_class

2025年05月04日43webabcd

我正在尝试为之后需要子类化的应用程序构建 FormView。遗憾的是我无法通过子类设置表单类。

我的代码:

class EventCreateView(FormView): 
    template_name='Events/add_event_form.html' 
    success_url = reverse_lazy('events_list') 
    form_class = None  # replaced by __init__ function 
 
    def __init__(self, *args, **kwargs): 
        self.form_class=EventForm 
        return super(EventCreateView, self).__init__(*args, **kwargs) 
 
    #other functions, not shown here ..  
 
 
class TrainingCreateView(EventCreateView): 
    def __init__(self, *args, **kwargs): 
        self.form_class=TrainingForm 
        return super(TrainingCreateView, self).__init__(*args, **kwargs) 

urls.py:

 urlpatterns = patterns('', 
     url(r'event/event/add/$', EventCreateView.as_view(), name='event_add'), 
     url(r'event/training/add/$', TrainingCreateView.as_view(), name='training_add'), 
 ) 

我做错了什么?

请您参考如下方法:

试试这个:

class EventCreateView(FormView): 
    template_name='Events/add_event_form.html' 
    success_url = reverse_lazy('events_list') 
    form_class = EventForm 
 
    ... 
 
class TrainingCreateView(EventCreateView): 
    form_class = TrainingForm