gpt4 book ai didi

python - 在 Wagtail 页面管理中对 DecimalField 使用逗号格式的数字

转载 作者:行者123 更新时间:2023-12-01 02:26:34 24 4
gpt4 key购买 nike

我收到客户的请求,希望拥有页面管理字段,他们可以在其中添加/读取带有逗号的数字,例如 1,000,000。

用于存储值的 Django 模型字段将是一个 django.db.models.fields.DecimalField 实例。

从 Django 文档来看,这是由 django.forms.fields.DecimalField localized 属性支持的,但我找不到一种方法在 Wagtail 管理中强制执行,即使使用 self.bound_field.field.localize = True 子类化 Wagtail BaseFieldPanel __init__ 函数也是如此。

最佳答案

您可以通过自定义此处记录的生成表单来覆盖 Wagtail FieldPanel 使用的字段:

http://docs.wagtail.io/en/v1.13/advanced_topics/customisation/page_editing_interface.html#wagtail.wagtailadmin.forms.WagtailAdminPageForm

下面的基本示例 - myapp/models.py

from django import forms
from django.db import models

from wagtail.wagtailadmin.edit_handlers import FieldPanel
from wagtail.wagtailadmin.forms import WagtailAdminPageForm
from wagtail.wagtailcore.models import Page

class MyCustomPageForm(WagtailAdminPageForm):
# fields here are django.forms fields
# when set to localize, renders as a TextInput widget
total_amount = forms.DecimalField(localize=True)

# when left with defaults, renders as a NumberInput widget
# total_amount = forms.DecimalField()

# can also set any kind of widget here
# total_amount = forms.DecimalField(widget=MyCustomDecimalWidget)

class MyCustomPage(Page):
# fields here are django.db.models fields
total_amount = models.DecimalField()
content_panels = Page.content_panels + [
FieldPanel('total_amount'),
]
base_form_class = MyCustomPageForm # important: must set this

当您将表单字段设置为 localize=True 时,它似乎遵循 Django Docs 中的预期行为。这是渲染一个 TextInput 小部件。

如果您想要执行一些更复杂的功能,您还可以为页面表单类中的任何字段设置自己的小部件。

关于python - 在 Wagtail 页面管理中对 DecimalField 使用逗号格式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com