在django-tables2中修改DateTimes的显示格式

时间:2015-01-20 15:22:31

标签: python html django django-tables2

我目前正在使用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')

3 个答案:

答案 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``