Modifying display format of DateTimes in django-tables2

django datetime format
django date format
django view datetime format
django-tables2 link column
datetime format in django template
django queryset datetime format
django datetime format string
how to change date format in django models

I'm currently using django-tables2 to display a queryset of my model. One of the attributes of this model is a DateTimeField accurate to the millisecond which is being truncated to the minute in my table.

I had previously manually implemented a simple table in HTML and had no issues. My DateTimeFields were following true to the DATETIME_FORMAT applied in my settings:

settings.py

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

The problem has arisen since I began using django-tables2. Is there some way to modify the way it displays DateTimeFields or make it follow my specified DATETIME_FORMAT? I need to retain the sorting functionality so converting to a string is not an option.

I'm using render_table to display my table. The following is my table class:

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

Problem solved.

django-table2's DateTimeColumn class seems to be looking for a SHORT_DATETIME_FORMAT rather than the DATETIME_FORMAT in my settings.py. Updated the value in my settings file and everything is in working order.

django_tables2.columns.datetimecolumn, [docs]@library.register class DateTimeColumn(TemplateColumn): """ A column that renders `datetime` instances in the local timezone. Arguments: format (str):  class django_tables2.columns.DateColumn (format=None, short=True, *args, **kwargs) [source] ¶ A column that renders dates in the local timezone. Parameters. format – format string in same format as Django’s date template filter (optional) short – if format is not specified, use Django’s SHORT_DATE_FORMAT setting, otherwise use DATE_FORMAT

This confused me for a while as I tried to use the Python datetime formatting options. The formatting options for Django templates apply in django-tables2, and are fully enumerated at the Django docs: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-date

From that, if you have a model with one datetime column, and you want their birthday to be formatted as Month Day Year, Hour:Minute AM/PM, then you would enter the following:

class MyTable(tables.Table):
    birthday = tables.DateTimeColumn(format ='M d Y, h:i A')

    class Meta:
        model = Person
        attrs = {'class': 'table'} 
        fields =  ['birthday']

Built-in columns, DateTimeColumn – datetime formatting in the local timezone. EmailColumn – renders <a href="mailto:"> tags. The datetime module of Python offers classes for manipulating dates and times easily. You can format any date of Python (as long as it is a datetime object) using the strftime method. Date formatting. A datetime object will have the method strftime that allows you to provide a custom format to a date and print it as a string wherever you need

You can add 'format' as argument to 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``

[PDF] django-tables2, Django-tables tries to be efficient in displaying big datasets. It tries to modify, the original QuerySet when that column is selected to be ordered. The method DateTimeColumn – datetime formatting in the local timezone. You can read more about them in Column and row attributes. django-tables2 supports three different dictionaries, this way you can give different attributes to column tags in table header (th), rows (td) or footer (tf)

Sams Teach Yourself Django in 24 Hours, FIGURE 9.6 Two tables generated with the same date in a different sort order using As another example, use the same code, but change the <h1> text to “​Arrival Table,” This section discusses using filters to display and format date and time For a full description of the datetime format characters, refer to Appendix C,  As highlighted earlier, we might need to format a date in different formats as per our requirements. We can use the SQL CONVERT() function in SQL Server to format DateTime in various formats. Syntax for the SQ: CONVERT() function is as follows.

Database Functions | Django documentation, We'll be using the following model in examples of each function: Get a screen name from least to most public >>> from django.db.models import from django.​db.models import DateTimeField >>> from django.db.models.functions import Cast, Coalesce will be the most recent of blog.modified and comment.modified . Parameters: paginate (dict or bool) – . indicates whether to paginate, and if so, what default values to use. If the value evaluates to False, pagination will be disabled.A dict can be used to specify default values for the call to paginate (e.g. to define a default per_page value).

Models | Django documentation, The CREATE TABLE SQL in this example is formatted using PostgreSQL Given a model instance, the display value for a field with choices can be If you change the value of the primary key on an existing object and then save datetime.date(1962, 8, 16) >>> ringos_membership.invite_reason 'Needed a new drummer. Parameters object. Procedural style only: A DateTime object returned by date_create().The function modifies this object. modify. A date/time string. Valid formats are explained in Date and Time Formats.