如何解决django如何将日期格式化为DD / MM / YYYY
django在这种情况下如何将日期格式化为DD / MM / YYYY:
class Invoice(models.Model):
date = models.DateField(default=timezone.now)
class InvoiceForm(ModelForm):
class Meta:
model = Invoice
fields = "__all__"
解决方法
Model
与您如何向客户展示数据无关,而与您如何在数据库中存储数据有关。
如果向用户显示数据,则取决于激活的设置。例如,如果USE_L10N
setting [Django-doc]处于活动状态,它将尝试确定用户的语言环境,并根据该格式确定日期。这意味着德国用户将看到与美国用户不同的日期格式。
如果USE_L10N
设置为False
,则表单字段将使用DATE_INPUT_FORMATS
setting [Django-doc]中的第一项。默认情况下是:
[ '%Y-%m-%d','%m/%d/%Y','%m/%d/%y',# '2006-10-25','10/25/2006','10/25/06' '%b %d %Y','%b %d,%Y',# 'Oct 25 2006','Oct 25,2006' '%d %b %Y','%d %b,# '25 Oct 2006','25 Oct,2006' '%B %d %Y','%B %d,# 'October 25 2006','October 25,2006' '%d %B %Y','%d %B,# '25 October 2006','25 October,2006' ]
因此它将首先格式化年,月,然后格式化日期,例如2020-08-28
。因此,您可以指定一个不同的元素(第一个)来更改所有具有DateField
fields [Django-doc]的Form
个元素。
如果要指定一次性字段,则可以使用DateInput
小部件的format=…
parameter [Django-doc],例如:
from django import forms
class InvoiceForm(ModelForm):
date = forms.DateField(widget=forms.DateInput(format='%d/%m%Y'))
class Meta:
model = Invoice
fields = '__all__'
然后,您还应该在DATE_INPUT_FORMATS
设置中包含该格式,并且比%m/%d/%Y
和%m/%d/%y
之类的“重叠”格式具有更高的优先级,以确保该值也可以被解析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。