Значение Djano имеет неправильный формат. Оно должно быть в формате YYYY-MM-DD HH:MM

например, когда я использую auto_now_add=True формат "Jan. 1, 2021, 5:05 a.m.", но когда я хочу обновить дату, я получаю ошибку "YYYY-MM-DD HH:MM[:ss[. uuuuuuuuuu]][TZ] format.']", у меня нет проблем, когда я обновляю ее, вводя в формате YYYY-MM-DD HH:MM, но как я могу привести эту дату автоматически в этот формат?

models.py;

class problemduyuru(models.Model):
    olusturulmatarihi = models.DateTimeField(auto_now_add=True, blank=True)
    duyurutipi = models.TextField(max_length=100, null=True)
    incidentno = models.TextField(max_length=100, null=True)
    baslangiczamani = models.TextField(max_length=100, null=True)
    aciklama = models.TextField(max_length=100, null=True) 

views.py create and update;

обновить;

def problemduyurusuupdate(request, id):
    problemmember = problemduyuru.objects.get(id=id)
    problemmember.duyurutipi = request.POST['duyurutipi']
    problemmember.incidentno = request.POST['incidentno']
    problemmember.baslangiczamani = request.POST['baslangiczamani']
    problemmember.aciklama = request.POST['aciklama']
    problemmember.olusturulmatarihi = request.POST['olusturulmatarihi']
    problemmember.save()
    messages.success(request, 'Alarmlar was updated successfully!')
    return redirect('/problemduyurusu')

create;

def problemduyurusucreate(request):
    if request.method == 'POST':
        problemmember = problemduyuru(
            duyurutipi=request.POST['dduyurutipi'],
            incidentno=request.POST['dincidentno'],
            baslangiczamani=request.POST['dbaslangiczamani'],
            aciklama=request.POST['daciklama'],
            olusturulmatarihi=request.POST['dolusturulmatarihi'], )
                 
        try:
            problemmember.full_clean()
        except ValidationError as e:
            pass
        problemmember.save()
        messages.success(request, 'Alarmlar was created successfully!')
        return redirect('/problemduyurusu')
    else:
        return render(request, 'problemduyurusucreate.html')

DateTimeField Поле всегда принимает строки в формате ISO 8601 в виде дат или аналогичных, распознаваемых функцией parse_datetime(). Некоторые примеры:

  • '2006-10-25 14:30:59'
  • '2006-10-25T14:30:59'
  • '2006-10-25 14:30'
  • '2006-10-25T14:30'
  • '2006-10-25T14:30Z'
  • '2006-10-25T14:30+02:00'
  • '2006-10-25'

https://docs.djangoproject.com/en/dev/ref/forms/fields/#datetimefield

но если вы хотите автоматически приводить эту дату в этот формат, вы можете использовать редактирование в views.py (обновление)

problemmember.olusturulmatarihi = parse_datetime(request.POST['olusturulmatarihi'])

Разбор строки с датой в поле Django DateTimeField

https://docs.djangoproject.com/en/dev/ref/utils/#module-django.utils.dateparse

и отредактируйте шаблон для того формата, который вы хотите показывать

{{ value|date:"D d M Y" }}

https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#date

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