到期后将模型字段值更改为True

时间:2019-11-21 21:24:12

标签: python django

我正在用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。

有什么办法解决吗?

1 个答案:

答案 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