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

Modifying display format of DateTimes in django-tables2

我目前正在使用 django-tables2 来显示我的模型的查询集。该模型的属性之一是精确到毫秒的 DateTimeField,在我的 table.

中被截断到分钟

我之前在 HTML 中手动实现了一个简单的 table 并且没有任何问题。我的 DateTimeFields 遵循设置中应用的 DATETIME_FORMAT:

settings.py

DATETIME_FORMAT = 'Y N j, H:i:s.u'

从我开始使用django-tables2开始就出现了这个问题。有什么方法可以修改它显示 DateTimeFields 的方式或使其遵循我指定的 DATETIME_FORMAT?我需要保留排序功能,因此无法转换为字符串。

我正在使用 render_table 来显示我的 table。以下是我的tableclass:

class ModelTable(tables.Table):
    class Meta:
        model = Measurement
        sequence = ('date_time', 'latitude', 'longitude',
                    'depth', 'soundvel', 'instrument')

问题已解决。

django-table2 的 DateTimeColumn class 似乎在寻找 SHORT_DATETIME_FORMAT 而不是我的 settings.py 中的 DATETIME_FORMAT。更新了我的设置文件中的值,一切正常。

当我尝试使用 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']

您可以添加 '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``