Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In the Django admin site, how do I change the display format of time fields?

I recently added a new model to my site, and I'm using an admin.py file to specify exactly how I want it to appear in the admin site. It works great, but I can't figure out how to get one of my date fields to include seconds in it's display format. I'm only seeing values like "Aug. 27, 2011, 12:12 p.m." when what I want to be seeing is "Aug. 27, 2011, 12:12*:37* p.m."

like image 636
Trindaz Avatar asked Aug 27 '11 19:08

Trindaz


People also ask

How do I change the date format in Django admin?

Changing django admin default formats could be done changing the django locale formats for every type you want. Put the following on your admin.py file (or settings.py) to change datetime default format at your django admin. It will change the ModelAdmin's datetime formats on that file (or whole site if in settings).

How do I change the admin text in Django?

To change the admin site header text, login page, and the HTML title tag of our bookstore's instead, add the following code in urls.py . The site_header changes the Django administration text which appears on the login page and the admin site. The site_title changes the text added to the <title> of every admin page.

What is admin panel in Django?

Django provides a built-in admin module which can be used to perform CRUD operations on the models. It reads metadata from the model to provide a quick interface where the user can manage the content of the application. This is a built-in module and designed to perform admin related tasks to the user.


2 Answers

Try this in the ModelAdmin:

def time_seconds(self, obj):     return obj.timefield.strftime("%d %b %Y %H:%M:%S") time_seconds.admin_order_field = 'timefield' time_seconds.short_description = 'Precise Time'      list_display = ('id', 'time_seconds', ) 

Replacing "timefield" with the appropriate field in your model, of course, and adding any other needed fields in "list_display".

like image 182
Gabriel Ross Avatar answered Sep 20 '22 16:09

Gabriel Ross


digging around I ended here but applied a different approach to my app.

Changing django admin default formats could be done changing the django locale formats for every type you want.

Put the following on your admin.py file (or settings.py) to change datetime default format at your django admin.

from django.conf.locale.es import formats as es_formats  es_formats.DATETIME_FORMAT = "d M Y H:i:s" 

It will change the ModelAdmin's datetime formats on that file (or whole site if in settings).

It does not breaks admin datetime filters and order features as @Alan Illing has point out in comments .

hope this help in future


Extra info:

You can change it for every available locale in django, which are a lot.

You can change the following formats using this approach

from django.conf.locale.es import formats as es_formats  es_formats.DATETIME_FORMAT es_formats.NUMBER_GROUPING es_formats.DATETIME_INPUT_FORMATS   es_formats.SHORT_DATETIME_FORMAT es_formats.DATE_FORMAT              es_formats.SHORT_DATE_FORMAT es_formats.DATE_INPUT_FORMATS       es_formats.THOUSAND_SEPARATOR es_formats.DECIMAL_SEPARATOR        es_formats.TIME_FORMAT es_formats.FIRST_DAY_OF_WEEK        es_formats.YEAR_MONTH_FORMAT es_formats.MONTH_DAY_FORMAT 
like image 26
Gabriel Avatar answered Sep 22 '22 16:09

Gabriel