Как удалять по истечению определенного времени данные из БД Django

Как удалить из БД данные в Django по истечению определенные даты У меня есть модель где есть ячейки "прибытия" и "отбытия" и мне надо когда придёт время отбытия чтоб из бд автоматом удалялись данные

    class Rooms(models.Model):
    booleans = models.BooleanField()
    room = models.CharField(max_length=100, choices=rooms_num,unique=booleans)

    def __str__(self):
        return self.room

    class Meta:
        verbose_name = 'Room'
        verbose_name_plural = 'Rooms'


class Registration(models.Model):
    admin = models.ForeignKey(User, on_delete=models.CASCADE)
    room_num = models.ForeignKey(Rooms, on_delete=models.CASCADE)

    name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    country = models.CharField(max_length=100, choices=countries)
    serial_number = models.CharField(max_length=100)
    gender = models.CharField(max_length=100, choices=genders, default='Male')
    birth_day = models.DateField()
    pinfl = models.IntegerField()
    image = models.FileField()
    visited_date = models.DateField()
    leaved_date = models.DateField()
    guest_count = models.IntegerField()

Ответы (1 шт):

Автор решения: Zhenia Kviatkivskyi

Логика может быть такой. Получаете текущую дату с помощью модуля datetime:

from datetime import datetime
today = datetime.today().strftime('%Y-%m-%d')
print(today)

'2022-05-05'

Получаете объект например по id класса Registration(), извлекаете поле leaved_date.

 ob_ject = Registration.objects.get(id=pk)
 leaved_date = ob_ject.leaved_date
 print(type(leaved_date)) 
 
 И если тип переменной leaved_date это str,
 если нет нужно конвертнуть в строку, можно написать условие:
 
 if today == leaved_date:
    ob_ject.delete()

В папке вашего приложения создайте файл urls.py

urlpatterns = [
  path("get/by/<int:pk>/, name='my page')]

views.py

def to_get_by_id(request, pk):

  ob_ject = Registration.objects.get(id=pk)
  leaved_date = ob_ject.leaved_date
  print(type(leaved_date)) 
  .....

  ПОЧИТАЙТЕ Django 2 в примерах. Антонио Меле.
  Начните с 40 стр. 
  
    
→ Ссылка