【问题标题】:DateField's DateInput widget with 'format="%B"' is not localized/translated带有 'format="%B"' 的 DateField 的 DateInput 小部件未本地化/翻译
【发布时间】:2021-09-14 16:00:19
【问题描述】:

我有一个 UpdateView,当我访问编辑页面时,我的日期字段将月份呈现为非本地化。

在我的表单中,我使用 format("%B %Y") 来表示完整的月份 + 年份,如下所示:

class CampaignForm(ModelForm):
    date = DateField(widget=DateInput(attrs={"autocomplete": "off"}, format="%B %Y"))

我在基本的 UpdateView 设置中使用表单,并渲染模板...

<div class="form-row">
    <div class="form-group flatpickrdatetimeinput col-md-6 mb-0">
        {{ form.date|as_crispy_field }}
    </div>
</div>

日期表示以月 + 年的形式工作,但我需要将月份名称本地化为当地语言。
我找不到错误,我尝试更改字段属性 (localize=True),并且我也尝试过设置(i18n、l10n 等)但没有成功。
事实上,到目前为止,这些设置已经完成。在同一个模板中,我使用“日期”模板过滤器,它可以很好地翻译月份

<h2>{{campaign.date | date:'F Y' }}</h2>

如何利用表单/表单域内部的 django 本地化?

【问题讨论】:

    标签: python django django-views django-forms localization


    【解决方案1】:

    在写这个问题时,我想尝试设置初始数据并将其本地化。
    它确实有效,但它是一种解决方法,我仍然认为它应该直接从表单中工作。
    如果您有解决方案,请随时添加。或者,如果您遇到此问题并且认为这是一个错误,请发表评论。

    from django.utils import formats
    
    class CampaignUpdateView(CampaignMixin, UpdateView):
    
        def get_initial(self):
            initial = super().get_initial()
            initial.update({"date": formats.date_format(self.object.date, format="F Y", use_l10n=True)})
            return initial
    

    【讨论】:

      猜你喜欢
      • 2020-05-24
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多