Получение неправильного формата даты в Django

Я пытаюсь создать форму для получения ввода даты от пользователя и последующей передачи этого ввода в другой скрипт на python Мой код формы Django выглядит следующим образом

from Django import forms


class NameForm(forms.Form):
    lev=forms.IntegerField(label='lev')
    status = forms.CharField(label='status', max_length=100)
    start_date = forms.DateField(widget=forms.DateInput(format = '%Y/%m/%d',attrs={'type': 'date'}))

я получаю дату и все остальные значения в моем файле views.py и затем передаю их моему скрипту python мой код views.py таков

def generate(request):
    form=NameForm(request.POST)
    if form.is_valid():
        a=str(form.cleaned_data.get('lev'))
        b= form.cleaned_data.get('status')
        c=str(form.cleaned_data.get('start_date'))
       


    output=run([sys.executable,'C:\\Users\\siddhant\\Desktop\\internship\\indicator\\work\\water.py',a,b,c],stdout=PIPE,text=True)
    

    events_list=level.objects.all()
    return render(request,'result.html',{'res':events_list})

и я делаю преобразование переданной даты в strptime в моем коде work.py следующим образом

current_level=int(sys.argv[1])
x=sys.argv[2]
start_date=sys.argv[3]
print(start_date)
start=datetime.strptime(start_date, "%y/%d/%m")

но я получаю ошибку ValueError: данные времени '2022-01-01' не соответствуют формату '%y/%d/%m' пожалуйста, может кто-нибудь подсказать, как справиться с этой проблемой

Вам необходимо правильно отформатировать объект date при вызове функции:

def generate(request):
    form = NameForm(request.POST)
    if form.is_valid():
        a = str(form.cleaned_data['lev'])
        b = form.cleaned_data.get('status')
        c = form.cleaned_data.get('start_date').strftime('%y/%d/%M')
        output=run([sys.executable,'C:\\Users\\siddhant\\Desktop\\internship\\indicator\\work\\water.py',a,b,c],stdout=PIPE,text=True)

В программе water.py вы должны разбирать его с помощью %M, а не %m, иначе вы разбираете минуту, а не месяц:

current_level = int(sys.argv[1])
x = sys.argv[2]
start_date = sys.argv[3]
print(start_date)
start = datetime.strptime(start_date, "%y/%d/%M")
Вернуться на верх