Изменение отображения поля в таблице Django tables2
Я пытаюсь взять поле даты и отобразить его в таблице django tables2. Проблема в том, что мое поле использует Djangos DateTimeField и имеет добавленное в конце время, которое я не хочу отображать. Моя первоначальная мысль была использовать декоратор свойств и ссылаться на него в моей таблице, а не использовать мое оригинальное поле даты. Но когда я пытаюсь использовать split внутри функции свойства, в таблице ничего не отображается. Если я модифицирую функцию, чтобы она просто выводила строку без использования split, то все работает как надо. Похоже, что я не могу использовать split нигде в функции, даже если я возвращаю жестко закодированную строку вместо того, что я разделяю. Использование split внутри функции просто ломает ее и заставляет ничего не отображать. Почему я не могу использовать split внутри моей функции, и есть ли альтернативный или лучший способ изменить то, как выглядит дата, когда она отображается в моей таблице?
#tables.py
class ReportTable(tables.Table):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class Meta:
attrs = {"class": "mytable"}
model = models.Report
fields = ("formatted_date")
#models.py
class Report(models.Model):
id = models.AutoField(db_column="RootCauseID", primary_key=True)
date = models.DateTimeField(db_column="date", blank=False, null=True)
@property
def formatted_date(self):
date = self.date
date_list = date.split()
final_date = date_list[0]
return f"{final_date}"
class Meta:
managed = True
db_table = "Report"
Вы не можете разделить то, что возвращается из столбца, потому что это объект Python datetime.datetime. Документация
class DateTimeField(auto_now=False, auto_now_add=False, **options)Дата и время, представленные в Python экземпляром datetime.datetime экземпляр. Принимает те же дополнительные аргументы, что и DateField.
По словам Марко, похоже, что можно самостоятельно изменить формат объекта datetime. Документация
tables.DateTimeColumn(format ='M d Y, h:i A')