Django datetime TypeError: fromisoformat: аргумент должен быть str

Вы не можете использовать str() напрямую для модуля времени

используйте это:

def __str__(self):
    return self.createdAt

или использовать:

def __str__(self):
    return f"{self.createdAt.strftime('%d-%m-%Y')}"

форматы данных

сначала вам нужно удалить файлы из папки migrations и __ pycache __ foledr, и вам может понадобиться очистить базу данных
. после этого запустите python manage.py makemigrations в терминале появятся такие строки ''' Невозможно добавить ненулевое поле 'created_at' в customuser без указания значения по умолчанию. Это происходит потому, что базе данных нужно что-то для заполнения существующих строк. Пожалуйста, выберите исправление:

  1. Предоставить одноразовое значение по умолчанию сейчас (будет установлено для всех существующих строк с нулевым значением для этого столбца)
  2. Выйти и вручную определить значение по умолчанию в models.py. ''' тип 1 должен спросить вас ''' Пожалуйста, введите значение по умолчанию в формате Python. Доступны модули datetime и django.utils.timezone, поэтому в качестве значения можно указать, например, timezone.now. Введите 'exit', чтобы выйти из этой подсказки ''' typetimezone.now

и запустить python manage.py migrate будет работать идеально

Недавно у меня возникла та же проблема, я решил ее, вернувшись к более старому сохраненному файлу и попробовав снова.

Я добавил это к своим моделям

    class Post(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=255)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, 
    related_name='posts')

    def __str__(self):
        return self.title

Если это не сработает, я где-то читал, что для этого нужно иметь python версии 3.9 или ниже.

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