如何在 Django 中向 UpdateView 添加小部件

VA *_*ash 2 forms django django-forms django-views django-widget

我需要将此小部件添加到 django UpdateView,

class tlistUpdate(LoginRequiredMixin,UpdateView):
    fields = ('title', 'thumbnail', 'content', 'tags')
    model = htmlpage
    template_name = 'blog/create_form.html'
Run Code Online (Sandbox Code Playgroud)

尝试添加

widgets = {
    'content': SummernoteWidget(),
}
Run Code Online (Sandbox Code Playgroud)

content = forms.CharField(widget=SummernoteWidget())
Run Code Online (Sandbox Code Playgroud)

但它没有用。

Wil*_*sem 8

UpdateView不构成为运用先进的滑模施工。这个想法是,fields如果您打算构建一个简单的(标准)Form.

您可以简单地构造一个ModelForm并在您的CreateView/ 中使用该表单UpdateView

# app/forms.py

from django import forms

class HtmlPageForm(forms.ModelForm):
    class Meta:
        model = HtmlPage
        fields = ('title', 'thumbnail', 'content', 'tags')
        widgets = {
            'content': SummernoteWidget
        }
Run Code Online (Sandbox Code Playgroud)

在你views.py然后你可以通过设置使用窗体form_class属性[Django的DOC]

# app/views.py

from app.forms import HtmlPageForm

class TlistUpdate(LoginRequiredMixin,UpdateView):
    model = htmlpage
    form_class = HtmlPageForm
    template_name = 'blog/create_form.html'
Run Code Online (Sandbox Code Playgroud)

注意:通常是 Django 模型,就像 Python 中的所有类都在PerlCase命名,而不是snake_case,所以它应该是:HtmlPage而不是htmlpage.