簡體   English   中英

用於通用模型的Django Createview

[英]Django Createview for generic Model

我一直在努力尋找這個,我無法在任何地方找到它。 所以,在這里:

我正在嘗試構建一個泛型類,它將通用模型作為參數並為其創建表單。 為此,我使用Django的ModelForm和CreateView類。 這個的主要目標是,當我需要創建一個新表單時,我只是聲明一個傳遞Model名稱的新URL。

urls.py

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

views.py

class GenericCreate(CreateView):

    def __init__(self, model, *args, **kwargs):
        super(GenericCreate, self).__init__(*args, **kwargs)
        self.form_class = to_modelform(self.model)

to_modelform是我實現的一個函數,它將模型轉換為模型形式,並且它可以工作。

這給了我以下錯誤:

/ create中的AttributeError此方法僅在視圖類上可用。

先感謝您!

您不應該創建視圖類的實例, as_view將為您執行此操作。

您通常會調用ViewClass.as_view() ,而不是ViewClass().as_view()

此外, CreateView已將model作為參數,因此您應將您的URL定義為:

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

要正確了解它的工作原理,請查看CreateView上的as_view方法 (完全披露 - 我建立了ccbv.co.uk

to_modelform提供了答案,但請注意您的to_modelform函數是不必要的。 CreateView與模型或模型實例完美匹配,而不是表單,請參閱文檔

我也有這個錯誤( TypeError: 'instance' is an invalid keyword argument for this function ); 對我而言,它與定義Model而不是form_class中的Form form_class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM