settings.py 中的 Django DATE_FORMAT 忽略格式或被覆盖
Django DATE_FORMAT in settings.py ignoring formatting or being overwritten
我正在尝试更改 SelectDateWidget
的格式 我已按照 this question including setting USE_L10N
to False
I have also looked at the list of acceptable format strings 中的步骤进行操作并尝试了多种组合。
问题是,无论我如何设置字符串格式,"Year" 下拉列表总是在左侧,而我希望它在右侧。即使我指定 2,它也总是格式化为 4 位数字。但是,我可以通过简单地不指定它来完全删除它。
谁能告诉我如何格式化 "Day : Moth Year" 中的日期?
我正在使用 Django 1.6.2
settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Europe/Dublin'
USE_I18N = True
USE_L10N = False
USE_TZ = True
这些是我尝试过的一些格式和结果。月份(长)= "January" 等
DATE_FORMAT = 'j N, Y' # Year(4 digit) : Month(long) : Day
DATE_FORMAT = 'j N, y' # Year(4 digit) : Month(long) : Day
DATE_FORMAT = 'j N' # Month(long) : Day
DATE_FORMAT = 'N j, Y' # Year(4 digit) : Day : Month(long)
DATE_FORMAT = 'N j, y' # Year(4 digit) : Day : Month(long)
DATE_FORMAT = 'N j' # Day : Month(long)
DATE_FORMAT = 'N, j, Y' # Year(4 digit) : Day : Month(long)
DATE_FORMAT = 'd, F, Y' # Year(4 digit) : Month(long) : Day
DATE_FORMAT = 'd, F, y' # Year(4 digit) : Month(long) : Day
我正在尝试渲染 birthdate
下面是我使用 ModelForm
创建的人物模型的一部分
models.py
class Person(models.Model):
birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py
forms.py
from django.forms import ModelForm
from django.forms.extras import SelectDateWidget
class SurveyFormA(forms.ModelForm):
birthdate = forms.DateField(widget=extras.SelectDateWidget(), required=False)
SelectDateWidget
会使用DATE_FORMAT
,但只是针对年月日的顺序,仅此而已。您可以在小部件代码本身中看到它不区分y
和Y
或b
和F
等:
elif char in 'Yy':
output.append('year')
#if not self.first_select: self.first_select = 'year'
elif char in 'bEFMmNn':
output.append('month')
#if not self.first_select: self.first_select = 'month'
elif char in 'dj':
output.append('day')
#if not self.first_select: self.first_select = 'day'
但你的情况很奇怪,解析似乎有效,但显示相反。 j N, Y
应该给你与你得到的相反的东西。因此,您应该尝试的一件事是将 DATE_FORMAT
倒过来。例如:
DATE_FORMAT = 'YNj'
话虽这么说,您也许应该看看您的 HTML,可能是样式中的某些东西导致了这种情况。 float: right
也许在某个地方?
至于2位数的年份,你可以传递一个参数来显示你想要显示的年份。这可以是 list/tuple。参见:
Takes one optional argument:
years
An optional list/tuple of years to use in the “year” select
box. The default is a list containing the current year and the next 9
years.
https://docs.djangoproject.com/en/1.6/ref/forms/widgets/
像这样:
birthdate = forms.DateField(widget=extras.SelectDateWidget(years=('15','16','17','18','19')), required=False)
我正在尝试更改 SelectDateWidget
的格式 我已按照 this question including setting USE_L10N
to False
I have also looked at the list of acceptable format strings 中的步骤进行操作并尝试了多种组合。
问题是,无论我如何设置字符串格式,"Year" 下拉列表总是在左侧,而我希望它在右侧。即使我指定 2,它也总是格式化为 4 位数字。但是,我可以通过简单地不指定它来完全删除它。
谁能告诉我如何格式化 "Day : Moth Year" 中的日期?
我正在使用 Django 1.6.2
settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Europe/Dublin'
USE_I18N = True
USE_L10N = False
USE_TZ = True
这些是我尝试过的一些格式和结果。月份(长)= "January" 等
DATE_FORMAT = 'j N, Y' # Year(4 digit) : Month(long) : Day
DATE_FORMAT = 'j N, y' # Year(4 digit) : Month(long) : Day
DATE_FORMAT = 'j N' # Month(long) : Day
DATE_FORMAT = 'N j, Y' # Year(4 digit) : Day : Month(long)
DATE_FORMAT = 'N j, y' # Year(4 digit) : Day : Month(long)
DATE_FORMAT = 'N j' # Day : Month(long)
DATE_FORMAT = 'N, j, Y' # Year(4 digit) : Day : Month(long)
DATE_FORMAT = 'd, F, Y' # Year(4 digit) : Month(long) : Day
DATE_FORMAT = 'd, F, y' # Year(4 digit) : Month(long) : Day
我正在尝试渲染 birthdate
下面是我使用 ModelForm
models.py
class Person(models.Model):
birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py
forms.py
from django.forms import ModelForm
from django.forms.extras import SelectDateWidget
class SurveyFormA(forms.ModelForm):
birthdate = forms.DateField(widget=extras.SelectDateWidget(), required=False)
SelectDateWidget
会使用DATE_FORMAT
,但只是针对年月日的顺序,仅此而已。您可以在小部件代码本身中看到它不区分y
和Y
或b
和F
等:
elif char in 'Yy':
output.append('year')
#if not self.first_select: self.first_select = 'year'
elif char in 'bEFMmNn':
output.append('month')
#if not self.first_select: self.first_select = 'month'
elif char in 'dj':
output.append('day')
#if not self.first_select: self.first_select = 'day'
但你的情况很奇怪,解析似乎有效,但显示相反。 j N, Y
应该给你与你得到的相反的东西。因此,您应该尝试的一件事是将 DATE_FORMAT
倒过来。例如:
DATE_FORMAT = 'YNj'
话虽这么说,您也许应该看看您的 HTML,可能是样式中的某些东西导致了这种情况。 float: right
也许在某个地方?
至于2位数的年份,你可以传递一个参数来显示你想要显示的年份。这可以是 list/tuple。参见:
Takes one optional argument:
years
An optional list/tuple of years to use in the “year” select box. The default is a list containing the current year and the next 9 years.
https://docs.djangoproject.com/en/1.6/ref/forms/widgets/
像这样:
birthdate = forms.DateField(widget=extras.SelectDateWidget(years=('15','16','17','18','19')), required=False)