我正在用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。
有什么办法解决吗?
答案 0 :(得分:-2)
这很简单。您只需要准备脚本以将model字段更改为True并将此脚本放入服务器上的CRON表即可。
https://en.wikipedia.org/wiki/Cron
CRON表中的bash文件示例
@admin.register(Object)
class Admin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
def has_change_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
cron.py示例
#!/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