gpt4 book ai didi

django - 将 DateInput 小部件的格式更改为 SHORT_DATE_FORMAT

转载 作者:行者123 更新时间:2023-12-02 06:41:26 25 4
gpt4 key购买 nike

我正在尝试将 DateInput格式设置为SHORT_DATE_FORMAT。但是,下面的代码不起作用。

表单.py

from django.conf.global_settings import SHORT_DATE_FORMAT

class EventForm(ModelForm):
# ...
startDate = forms.DateField(
widget=forms.DateInput(
format=SHORT_DATE_FORMAT
)
)

在views.py中,从数据库读取示例条目,并使用form = EventForm(instance=event1)创建表单。然后,模板使用 {{form.startDate}} 显示该小部件。输入正确显示,只是它的值不是日期而只是“m/d/Y”。

如果我设置format='%m/%d/%Y',它会起作用,但是,这违背了区域设置感知SHORT_DATE_FORMAT的目的。我该如何正确解决这个问题?

最佳答案

一个可能的解决方案是覆盖 DateInput 小部件,如下所示。

from django.template.defaultfilters import date

class ShortFormatDateInput(DateInput):

def __init__(self, attrs=None):
super(DateInput, self).__init__(attrs)

def _format_value(self, value):
return date(value, formats.get_format("SHORT_DATE_FORMAT"))

它覆盖了 super 构造函数,因此无法再手动更改日期格式。相反,我想显示 SHORT_DATE_FORMAT 中定义的日期。为此,可以覆盖 _format_value 方法以重用 django.templates 定义的 date 方法。

关于django - 将 DateInput 小部件的格式更改为 SHORT_DATE_FORMAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30175923/

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