Как автоматически проверить, не истекла ли подписка пользователя, и внести изменения в модель?
Я делаю сайт, где пользователь выбирает план с разным сроком действия, например, 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