如何在 Django 中将小部件添加到 UpdateView

Posted

技术标签:

【中文标题】如何在 Django 中将小部件添加到 UpdateView【英文标题】:How to add Widgets to UpdateView in Django 【发布时间】:2020-06-20 00:26:09 【问题描述】:

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

但它没有用。

【问题讨论】:

只需使用表格即可。 【参考方案1】:

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')
        widgets = 
            'content': SummernoteWidget
        

在您的views.py 中,您可以通过设置form_class attribute [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

【讨论】:

以上是关于如何在 Django 中将小部件添加到 UpdateView的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt 中将多个小部件添加到 QTableWidget 单元格

如何在颤动中将数据从一个小部件传递到另一个小部件?

如何在 Qt 中将消息从子窗口小部件发送到父窗口?

qt 小部件在添加到另一个小部件时重叠

如何在 django 中将虚拟数据添加到数据表中?

Django小部件 - 将类添加到字段