Хотел отфильтровать все записи, созданные за последние 24 часа с помощью фильтра Django, но временная метка хранится в формате epoch в CharField
проблемный контекст - У меня есть такая модель django.
class UpdateRequests(models.Model):
field_name = models.CharField(max_length=20)
field_new_value = models.CharField(max_length=20)
created_at = models.CharField(max_length=10)
customer_id = models.CharField(max_length=50)
request_status = models.CharField(max_length=20, choices=JOS_STATUS)
request_close_date = models.CharField(max_length=20)
постановка задачи - я хочу получить все записи, созданные за последние 24 часа.
как я пытался - Я пытался вот так в моей функции представления
time_threshold = datetime.now() - timedelta(days=1)
results = UpdateRequests.objects.filter(created_at__lte=time_threshold,
request_status="Pending").values()
но это не работает, и я полагаю, потому что django __lte , __gte работает только на DateTimeField(). ссылка - https://docs.djangoproject.com/en/4.1/ref/models/querysets/
Пожалуйста, помогите мне с этим, я не хочу менять схему, так как она уже есть в продакшене.
Вы хранили datetime в charfield created_at = models.CharField(max_length=10)
Как db может служить вам Datetime Object? Вы должны внести изменения в Models и создать объекты снова с этим
created_at = models.DateTimeField(null=True,blank=True,auto_now_add=True)
auto_now_add=True
Будет получено текущее время, когда вы создадите объект модели.