【发布时间】:2020-07-16 07:56:05
【问题描述】:
我有一个 postgresql9.6 表,它有一个 char 字段:“start_date”,格式类似于“20200101”。
并且我创建了一个 Django2.0 模型:
class TestModel(models.Model):
start_date = models.DateField('start_date')
我的 admin.py 是:
class TestAdmin(admin.ModelAdmin):
list_display = ('start_date',)
admin.site.register(TestModel, TestAdmin)
而且我还修改了settings.py:
USE_L10N = False
DATE_INPUT_FORMATS = ['%Y%m%d']
DATE_FORMATS = ['%Y%m%d']
所以我在网络表单中获取日期:'20200101',但是当我保存表单时,显示错误:
'值的日期格式无效。一定是 ”
"以 YYYY-MM-DD 格式。'
我知道 DateField 保存日期默认使用 'YYYY-MM-DD' 格式,但我需要将其更改为 'YYYYMMDD' 以便将一致的数据保存到 pg 数据库中。
那么如何覆盖 DateField 或 Model 函数来改变默认格式呢?
【问题讨论】:
-
你可以在你的模型上添加一个
CharField,并验证它看起来像一个日期吗? -
我试过了,但我需要使用管理站点的 datepicker 小部件,所以我将字段更改为 DateField。
-
您想以这种格式 YYYY-MM-DD 保存在 DB 中并从 DB YYYYMMDD 中获取吗?这可能会有所帮助:stackoverflow.com/questions/53402437/…
-
我想用 YYYYMMDD 将数据保存在数据库中
-
在你的设置文件中你应该定义 `DATETIME_FORMAT = %Y%m%d' 并在你的模型中使用 DateTimeField