首页 > 解决方案 > 在 WagTail 中呈现具有初始值的表单

问题描述

我需要使用预填充的数据呈现一个表单,但在 WagTail 中似乎是不可能的。我正在尝试使用MyForm(initial={"field_name": value})(如果需要,则MyForm继承WagtailAdminModelForm)以“Django 方式”来执行此操作,但这是不可能的,因为MyForm没有Meta.model字段,而且据我所知,由于 WagTail 的设计方式,无法指定它。

是否有任何解决方法或替代方法来呈现预填充的表单?

标签: wagtail

解决方案


# models.py

from django.db import models
from wagtail.core.models import Page
from wagtail.admin.edit_handlers import FieldPanel
from wagtail.admin.forms import WagtailAdminPageForm


class BlogForm(WagtailAdminPageForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        my_field = self.fields["my_field"]
        my_field.widget.attrs["value"] = "My new initial data"


class Blog(Page):
    my_field = models.CharField(max_length=255, default='', blank=True)

    content_panels = Page.content_panels + [
        FieldPanel("my_field"),
    ] 

    base_form_class = BlogForm

推荐阅读