用于通用模型的Django Createview

Nun*_*sky 6 python generics django modelform

我一直在努力寻找这个,我无法在任何地方找到它.所以,在这里:

我正在尝试构建一个泛型类,它将通用模型作为参数并为其创建表单.为此,我使用Django的ModelForm和CreateView类.这个的主要目标是,当我需要创建一个新表单时,我只是声明一个传递Model名称的新URL.

urls.py

url(r'^create', GenericCreate(model=Author).as_view(), name='create'),
Run Code Online (Sandbox Code Playgroud)

views.py

class GenericCreate(CreateView):

    def __init__(self, model, *args, **kwargs):
        super(GenericCreate, self).__init__(*args, **kwargs)
        self.form_class = to_modelform(self.model)
Run Code Online (Sandbox Code Playgroud)

to_modelform是我实现的一个函数,它将模型转换为模型形式,并且它可以工作.

这给了我以下错误:

/ create中的AttributeError此方法仅在视图类上可用.

先感谢您!

mes*_*shy 6

您不应该创建视图类的实例,as_view将为您执行此操作.

你通常会打电话ViewClass.as_view(),而不是ViewClass().as_view().

此外,CreateView已将其model作为参数,因此您应将您的网址定义为:

url(r'^create', CreateView.as_view(model=Author), name='create'),

要正确了解它的工作原理,请查看as_viewCreateView上的方法.(完全披露 - 我建了ccbv.co.uk.)