Хотел отфильтровать все записи, созданные за последние 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 Будет получено текущее время, когда вы создадите объект модели.

Вернуться на верх