В django я хочу изменить дату из представления

Я хочу обновлять дату из бэкенд представлений в django как я могу это сделать вот мои представления где я хочу это сделать объясняю, что именно я хочу достичь я строю crm, где клиенты должны платить ежемесячно или ежеквартально в зависимости от их плана я дал кнопку в dashbord, которая запускает эту функцию и перенаправляет на домашнюю страницу в этой функции, если пользователь дата месяц пришел тогда эта функция должна генерировать счета, которые на главной странице и показать неоплаченную сумму, что неправильно происходит с этой идеей каждый раз при нажатии кнопки он будет генерировать дубликаты счетов добавление в доход, чтобы остановить это я добавил переменную имеет право, который я думал, что пользователь будет изменять его вручную, но потом я чувствую, что это более хорошо, чтобы обновить дату

def refresh_dashboard(request):
    date = datetime.datetime.now().strftime ("%Y%m%d")
    m = datetime.date.today()
    print(f"the date is {m}")
    customer = Customer.objects.all()
    for i in customer:
        # print(i.eligible)
        period = i.next_payment.strftime("%Y%m%d")
        
        if period <= date and i.eligible == True:
            x = Bill.objects.create(name = i.name,status ="unpaid",price = i.recuring_amount,generate_date = date)
            x.save()
            obj = i
            # obj.next_payment.strftime("%Y%(m+1)%d")
            obj.eligible = False
            obj.save()
            # print(f"the date is {date} and the obtain from the customer is {period}")
            # print(f"this customer  {i.name} bill need to be generated")
    # print(f"the date is {datetime.datetime.now()}")
    return redirect('/')

Вы можете увеличить datetime на основе заданных дней, используя timedelta

    from datetime import datetime  
    from datetime import timedelta #new

    today = datetime.now() 
    print(f"Today's the date & Time is {today}")
    month_later = today+ timedelta(days=MONTHLY_CYCLE)
    three_months_later = today+ timedelta(days=QUA_CYCLE)
    six_months_later = today+ timedelta(days=SIX_MONTH_CYCLE)
    print(f"three_months_later's the date & Time is {month_later}")
    print(f"three_months_later's the date & Time is {three_months_later}")
    print(f"six_months_later's the date & Time is {six_months_later}")
    
    customer = Customer.objects.get(pk=id) # Targeted Customer 
    selected_cycle = int(customer.billing_cycle) #return the value of billing_cycle selected from Customer
    tentative_date = today+ timedelta(days=selected_cycle) 
    print(f"tentative_date Billing date & Time is {month_later}") # Required DAte.  

Вот как вы можете обновить datetime. остальное вы можете реализовать по мере необходимости.

Вернуться на верх