过期时间后将模型字段值更改为 True



我正在用Django创建一个简单的汽车租赁项目。

我有一个视图,用户必须在其中输入他想租车多少天的值,然后按"租"按钮。在这种情况下,"汽车"模型的"is_car_available"字段获得 False 值,无法租用。

@login_required
def rent(request, pk):
car_to_rent = Car.objects.get(pk=pk)
if request.method == 'POST':
form = RentingForm(request.POST)
if form.is_valid():
days = form.cleaned_data['days']
total_price = car_to_rent.car_price * days
reservation = Reservation.objects.create(how_many_days=days, car=car_to_rent, booker=request.user, total_price=total_price)
car_to_rent.is_car_availible = False
car_to_rent.save()

content_for_frontend = {
'car_to_rent': car_to_rent,
'form': form,
}
return render(request, 'rental/rent.html', content_for_frontend)
else:
return HttpResponseRedirect('/')

预留模型具有"expiration_date"方法,该方法是在将租赁日期添加到天数后计算的。 我希望在租赁结束时看到"is_car_available"更改为 True。

有什么想法如何解决吗?

这很简单。您所需要的只是准备脚本以将模型字段更改为 True,并将此脚本放入服务器上的 CRON 表中。

https://en.wikipedia.org/wiki/Cron

CRON 表中的示例 bash 文件

#!/bin/bash 
source /path/to/your/virtualenv/bin/activate
cd /path/to/your/project/folder
export DJANGO_SETTINGS_MODULE=settingsFile
export PYTHONIOENCODING=utf-8
python manage.py shell < cron.py

示例 cron.py

import os
import sys
import django
django.setup()
import pytz, time
from django.utils import timezone
from django.db.models import Q
form appName.models import modelName
items = modelName.objects.filter(
Q(is_car_availiable=False),
Q(reserved_untill__lte=timezone.now())
)
update_data = {
"is_car_acailiable": True,
"reserved_untill": None
}
items.update(**update_data)

最新更新