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

7
我需要将此小部件添加到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())

但是它没有起作用。


只需使用一个表单。 - Willem Van Onsem
1个回答

12

UpdateView不适合处理高级表单构建。其设计初衷是,如果你想构建一个 简单(标准)的Form,则使用fields即可。

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

# app/forms.py

from django import forms

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

在您的views.py中,您可以通过设置form_class属性 [Django-doc]来使用表单:

# app/views.py

from app.forms import HtmlPageForm

class TlistUpdate(LoginRequiredMixin,UpdateView):
    model = htmlpage
    <b>form_class = HtmlPageForm</b>
    template_name = 'blog/create_form.html'

注意:通常情况下,Django模型(就像Python中的所有类一样)采用PerlCase而不是snake_case命名方式,因此应该使用HtmlPage而不是htmlpage


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接