我目前正在使用django-tables2来显示我的模型的查询集。这个模型的一个属性是DateTimeField,精确到毫秒,在我的表中被截断到分钟。
我以前在HTML中手动实现了一个简单的表,没有任何问题。我的DateTimeFields对我在我的设置中应用的DATETIME_FORMAT是真实的:
settings.py
DATETIME_FORMAT = 'Y N j, H:i:s.u'
自从我开始使用django-tables2以来,问题就出现了。有没有办法修改显示DateTimeFields的方式或使其遵循我指定的DATETIME_FORMAT?我需要保留排序功能,因此转换为字符串不是一种选择。
我使用render_table来显示我的表格。以下是我的表类:
class ModelTable(tables.Table):
class Meta:
model = Measurement
sequence = ('date_time', 'latitude', 'longitude',
'depth', 'soundvel', 'instrument')
答案 0 :(得分:3)
问题解决了。
django-table2的DateTimeColumn类似乎在我的settings.py中寻找SHORT_DATETIME_FORMAT而不是DATETIME_FORMAT。更新了我的设置文件中的值,一切正常。
答案 1 :(得分:3)
当我尝试使用Python日期时间格式化选项时,这让我困惑了一段时间。 Django模板的格式化选项适用于django-tables2,并在Django文档中完全枚举:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-date
由此,如果您的模型包含一个日期时间列,并且您希望将其生日格式设置为Month Day Year, Hour:Minute AM/PM
,则应输入以下内容:
class MyTable(tables.Table):
birthday = tables.DateTimeColumn(format ='M d Y, h:i A')
class Meta:
model = Person
attrs = {'class': 'table'}
fields = ['birthday']
答案 2 :(得分:0)
您可以将'format'作为参数添加到DateTimeColumn。
https://django-tables2.readthedocs.io/en/latest/_modules/django_tables2/columns/datetimecolumn.html
class DateTimeColumn(TemplateColumn):
"""
A column that renders `datetime` instances in the local timezone.
Arguments:
format (str): format string for datetime (optional).
Note that *format* uses Django's `date` template tag syntax.
short (bool): if `format` is not specified, use Django's
``SHORT_DATETIME_FORMAT``, else ``DATETIME_FORMAT``