Как отображать только дату из поля даты и времени в modelAdmin в панели администратора Django?

У меня есть модель, в которой есть столбец created_at, который на самом деле является полем datetime этого формата 16.07.2019 12:26:37.

Я хочу отображать только дату в этом поле created_at в панели администратора в Django.

Я могу отобразить значение всего поля, которое равно datetime, если я упомяну 'created_at' в list_display при создании modelAdmin.

Как я могу отображать только значение date на странице результатов, как это 16.07.2019?

Существуют ли какие-либо встроенные фильтры для этого при регистрации modelAdmin?

Python: 3.7.3
Django: 2.1.5

person Underoos    schedule 26.07.2019    source источник


Ответы (1)


Вы можете добавить метод в класс ModelAdmin.

@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
    list_display = ('get_date_formatted',)

    def get_date_formatted(self, obj):
        if obj:
            return obj.date.date()
    get_date_formatted.admin_order_field = 'date'
    get_date_formatted.short_description = 'date'
person bdoubleu    schedule 26.07.2019
comment
Я понял это несколько мгновений назад. Спасибо, кстати. Это сработало. - person Underoos; 26.07.2019
comment
Что делать, если у меня есть два поля даты? - person Arindam Roychowdhury; 03.09.2019
comment
@ArindamRoychowdhury вам понадобятся два метода, например get_date_start_formatted и get_date_end_formatted. Урезанная строка return obj.date.date() — это <model_instance>.<model_field>.<method>(), поэтому вам необходимо убедиться, что поле модели, извлекаемое из объекта, ссылается на желаемое поле в вашей модели. - person bdoubleu; 03.09.2019