【问题标题】:How to change Date Format in a form field Django如何在表单字段Django中更改日期格式
【发布时间】:2021-05-14 17:55:25
【问题描述】:

我需要以不同的格式显示表单 => "%d%m%Y"。我尝试了所有方法,但没有任何效果。

在我的 forms.py 中

class DateInput(forms.DateInput):
    input_type = 'date'

class VendaForm(forms.ModelForm):
    class Meta():
        model = Venda
        exclude = ['acertado', 'status', 'viagem', 'paid',]
        widgets = {
            'sale_date': DateInput(),
            'expiration_date': DateInput(),
        }

【问题讨论】:

    标签: django date


    【解决方案1】:

    要自定义表单中DateField 使用的格式,我们可以在字段上设置input_formats kwarg [Django docs],该字段是用于解析用户输入的日期的格式列表并将format kwarg [Django docs] 设置为显示字段初始值格式的小部件。

    如果我们不提供这些参数,则使用的格式来自DATE_INPUT_FORMATS setting [Django docs](对于小部件,使用此列表中的第一种格式)因此,如果我们希望我们的所有日期字段中的所有日期字段都可以更改此设置项目。

    要专门设置字段的格式,您的代码如下:

    class VendaForm(forms.ModelForm):
        sale_date = forms.DateField(
            widget=forms.DateInput(format='%d%m%Y'),
            input_formats=['%d%m%Y']
        ) # Perhaps you should consider a separator in this format i.e. `%d-%m-%Y` instead of `%d%m%Y`
        expiration_date = forms.DateField(
            widget=forms.DateInput(format='%d%m%Y'),
            input_formats=['%d%m%Y']
        )
        class Meta():
            model = Venda
            exclude = ['acertado', 'status', 'viagem', 'paid',]
    

    【讨论】:

      【解决方案2】:

      您可以在模板中添加

      {{date_field_name|date:'%d-%m-%Y'}} # change date_field_name to the name of your field
      

      【讨论】:

      • 这仅在字段作为日期时间对象传递时有效,在表单字段上不起作用。
      【解决方案3】:

      你可以这样做{{ date_field | date:"d-m-Y" }} # 输出将是例如 14-05-2021
      另外,如果您想从 db 更改日期格式,请查看此link
      date templatetag 的 Django 文档

      【讨论】:

        猜你喜欢
        • 2018-07-15
        • 1970-01-01
        • 2015-04-13
        • 2022-01-23
        • 2019-07-10
        • 2015-12-21
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        相关资源
        最近更新 更多