如何在基于 class 的通用视图中更改 django 中的时间格式

How to change the time format in django in a generic class based view

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

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

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

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

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