Как автоматически проверить, не истекла ли подписка пользователя, и внести изменения в модель?

Я делаю сайт, где пользователь выбирает план с разным сроком действия, например, 7 дней, 14 дней, 21 день. Однако план не активируется сразу. После того, как пользователь завершает процесс регистрации, он должен принять соглашение, а затем, в зависимости от типа выбранного им плана, дата истечения устанавливается с даты принятия, и поле contract_status устанавливается True.

Теперь я хочу знать, как я могу автоматически проверить, что срок действия подписки пользователя достигнут, и установить contract_status этого пользователя в false, а затем, возможно, сделать некоторые другие вещи. Но в основном я хочу знать, как я могу автоматически проверить истечение срока действия подписки и установить поле в False.

models.py Это модель, которая имеет поля для хранения даты принятия, срока действия и статуса контракта

class Contract(models.Model):
    user = models.OneToOneField(CustomUser, null= True, on_delete=models.CASCADE)
    contract_status = models.BooleanField(default=False)
    date_of_acceptance = models.DateTimeField(null= True)
    date_of_expiration = models.DateTimeField(null=True, blank=True)

views.py Это представление, которое работает с вышеупомянутой моделью, когда пользователь присоединяется к соглашению

Вы можете сделать класс разрешения, в котором нужно проверить, что текущая дата больше, чем истекшая дата. Если текущая дата больше, установите статус контакта в false и верните false, иначе верните true. Вот пример кода:

def permission_method(user_subscription_time, current_time):
    if user_subscription_time < current_time:
        contract = Contract.object.get(user__username = request.user)
        return False
    else:
        True
Вернуться на верх