【问题标题】:How to change the time format in django in a generic class based view如何在基于通用类的视图中更改 django 中的时间格式
【发布时间】:2016-12-24 17:49:32
【问题描述】:

在使用 CreateView 或 UpdateView 时,是否可以更改日期时间字段的格式?我试图让表格以"2016-12-29 03:49 PM" 之类的形式接受日期。我知道格式应该是'%Y-%m-%d %I:%M %p',这在 shell 中测试得很好。我只是不知道如何使用 CreateView 或 UpdateView 让它工作,但它似乎应该能够完成。

【问题讨论】:

    标签: python django django-generic-views


    【解决方案1】:

    您需要更新您的表单类以接受其他输入格式。您的表单应如下所示:

    class YourForm(ModelForm):
        date_of_birth = DateTimeField(input_formats='%Y-%m-%d %I:%M %p')
        class Meta:
            model = YourModel
    

    但是,最好将所有可接受的输入格式放在一个变量中,然后从 settings.py 中调用它,如下所示:

    settings.py
    DATE_INPUT_FORMATS = [
        '%Y-%m-%d %H:%M:%S',
        '%m/%d/%Y %H:%M:%S',
        '%Y-%m-%d %I:%M %p',
    ]
    
    forms.py
    class YourForm(ModelForm):
        date_of_birth = DateTimeField(input_formats=settings.DATE_INPUT_FORMATS)
        class Meta:
            model = YourClass
    

    最后,无论如何,我不会让用户手动输入日期(假设此视图适用于人类),给他们一个 DateTime 小部件来为他们选择它。您可以在此处找到有关小部件的信息:https://docs.djangoproject.com/en/1.10/ref/forms/widgets/

    以及有关日期时间表单字段的信息: https://docs.djangoproject.com/en/1.10/ref/forms/fields/#datetimefield

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 2013-01-10
      • 2017-08-03
      • 2019-08-29
      • 2012-08-15
      • 2011-09-19
      • 2014-03-21
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多