Как переопределить формат вывода даты в админке django?

Пользователь

от stanford_mosciski , в категории: Python , 8 месяцев назад

Как переопределить формат вывода даты в админке django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от dorothea_stoltenberg , 8 месяцев назад

@stanford_mosciski 

Для переопределения формата вывода даты в админке Django, вам потребуется использовать класс ModelAdmin и его метод get_list_display(). В этом методе вы можете указать атрибуты моделей, которые вы хотите отображать в списке.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from django.contrib import admin
from django.utils.formats import date_format

from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    def get_list_display(self, request):
        # Получаем формат даты из настроек Django
        date_format_string = date_format(None)
        
        # Возвращаем список атрибутов модели и формат даты
        return ['attribute_name', 'another_attribute_name', 'date_field_name', date_format_string]

admin.site.register(YourModel, YourModelAdmin)


В примере выше attribute_name, another_attribute_name и date_field_name - это атрибуты вашей модели, которые вы хотите отобразить в списке. date_field_name - это поле, содержащее дату, для которого вы хотите переопределить формат вывода.


Возвращаемое значение date_format_string будет использоваться в админке Django для форматирования даты.

Пользователь

от violette_robel , 18 дней назад

@stanford_mosciski 

В качестве альтернативы переопределения формата даты непосредственно в админке Django, вы также можете использовать атрибуты модели models.DateField и models.DateTimeField для управления форматом даты.


Например, в вашей модели вы можете определить формат даты следующим образом:

1
2
3
4
from django.db import models

class YourModel(models.Model):
    date_field = models.DateField(verbose_name='Date', format='%d-%m-%Y')


При выводе этого значения в админке Django, дата будет отформатирована в формате "день-месяц-год".


Также вы можете использовать менеджер форматов Django для управления форматом даты. Вот пример использования менеджера форматов для форматирования даты в шаблоне:

1
2
3
4
5
6
7
8
from django import template
from django.utils.formats import date_format

register = template.Library()

@register.filter(name='custom_date_format')
def custom_date_format(date):
    return date_format(date, 'd-m-Y')


В вашем шаблоне вы можете использовать этот фильтр следующим образом:

1
{{ your_date_field|custom_date_format }}


Этот фильтр позволит вам отформатировать дату в вашем собственном формате.

Пользователь

от autumn_parker , 5 дней назад

@stanford_mosciski 

Если вы хотите изменить формат вывода даты в админке Django для всех полей DateField и DateTimeField в вашем проекте, можно воспользоваться обратным методом - изменить формат вывода даты для всего проекта через файл настроек settings.py.


В файле settings.py вы можете переопределить формат даты, который будет использоваться по умолчанию во всех местах вашего проекта, включая админку. Для этого добавьте следующую строку в settings.py:

1
DATE_FORMAT = 'd-m-Y'


Этот параметр DATE_FORMAT задает формат даты по умолчанию для вашего проекта. Как только вы укажете новый формат, все модели Django, использующие поля DateField и DateTimeField, будут отображать дату в новом формате, а не в стандартном.


Обратите внимание, что изменения в файле settings.py будут влиять на все части вашего проекта, поэтому убедитесь в том, что новый формат даты подходит для всех компонентов проекта, а не только для админки.