У меня есть поле created_date:
class Comment(models.Model):
created_date = models.DateTimeField(auto_now_add=True)
Я хочу, чтобы поле, производное от created_date, идеально существовало в модели. Я знаю, что в SQL я могу сделать:
SELECT created_date::date
FROM Comment
Как бы я определил это в модели Django?
Обновлено: created_date - это всего лишь пример, поэтому я не могу использовать date.today() из модуля datetime. Также обратите внимание, что конечная цель состоит в том, чтобы сделать слаг с несколькими различными полями, включающими желаемое поле «date_only».
Вы можете использовать Поиск __date
[Django-doc] при фильтрации или в F
-выражении, или для более старых версий Django вы можете использовать Функция TruncDate
[Django-doc].
Таким образом, вы можете, например, отфильтровать Comment
s для определенной даты с помощью:
from datetime import date
Comment.objects.filter(created_date__date=date(2022, 4, 9))
Однако использование …_date
не имеет большого смысла: это объект datetime
, поэтому имя вашего поля намекает, что это DateField
, возможно, лучше использовать created
или created_timestamp
.
@noblertanoedipus: created_date
— это объект datetime
, поэтому вы можете использовать mycomment.created_date.year
для получения года или mycomment.created_date.date()
для получения объекта date
.
В конечном счете, я хочу, чтобы это было в модели, а не как поиск впоследствии. В идеале, чтобы я мог просматривать на странице администратора или создавать поле slug. Возможно ли это с вашим решением?