Как удалять по истечению определенного времени данные из БД 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 стр.