社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django日期字段的默认值格式

P. Rodoreda • 4 年前 • 987 次点击  

我试图在django模型中指定默认日期,例如:

from datetime import date

class A(models.Model):
    date = models.DateField(default=date.today())

这很有效,我可以在模型表单中看到默认日期,但是当我将表单输入格式更改为“%d-%m-%y”时,默认日期不会出现在字段中。

我也尝试过:

from datetime import date

class A(models.Model):
    date = models.DateField(default=date.today().strftime('%d-%m-%Y'))

这也不管用。有人能帮我吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38181
 
987 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Willem Van Onsem
Reply   •   1 楼
Willem Van Onsem    5 年前

这里有两个问题:

  1. 这个 DateField(default=today.today()) 工作,从那时起函数将被评估 急切地 ,那么缺省值就是该函数调用的结果。因此,默认值为 在构建新对象时计算,因此最终会有所不同;以及
  2. 表示 DateField . 现在 模型 指定表示,它只指定如何 商店 数据库中的值,并定义模型上的函数。

我们可以通过一个 参考 today 功能,例如:

from datetime import date

class A(models.Model):
    date = models.DateField(default=date.today)    # no ()

至于 代表 ,您应该在 模板 ,例如, date template filter [Django-doc] ,比如:

<!--  template.html -->
{{ some_a.date|date:'d-m-Y' }}

或采用以下形式:

# app/forms.py

class AForm(ModelForm):
    date = DateField(input_formats=['%d-%m-%Y'])
    class Meta:
       model = A
codeadict
Reply   •   2 楼
codeadict    5 年前

您可以使用 DATE_INPUT_FORMATS 在Django项目设置中设置,这将允许您 date.today().strftime('%d-%m-%Y') 被您的模型字段接受;但是, 日期字段 以相同类型的本机列而不是具有特定格式的字符串的形式存储在数据库中。在存储数据和在表单、模板或DRF序列化程序中表示数据之间存在差异。我确实建议保留数据库的默认格式,并使用 DATE_FORMAT 设置为 D—M—Y 只要你的日期 使用 设置为假。