首页 > 解决方案 > 如何在 Django 中将小部件添加到 UpdateView

问题描述

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

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

尝试添加

widgets = {
    'content': SummernoteWidget(),
}

content = forms.CharField(widget=SummernoteWidget())

但它没有用。

标签: djangoformsdjango-viewsdjango-formsdjango-widget

解决方案


UpdateView不是为处理高级表单构造而构造的。这个想法是,fields如果您打算构建一个简单的(standard) ,则可以使用Form

您可以简单地构造 a并在/ModelForm中使用该表单:CreateViewUpdateView

# app/forms.py

from django import forms

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

然后,您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'

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


推荐阅读