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 без указания значения по умолчанию. Это происходит потому, что базе данных нужно что-то для заполнения существующих строк.
Пожалуйста, выберите исправление:
- Предоставить одноразовое значение по умолчанию сейчас (будет установлено для всех существующих строк с нулевым значением для этого столбца)
- Выйти и вручную определить значение по умолчанию в models.py.
'''
тип 1
должен спросить вас
'''
Пожалуйста, введите значение по умолчанию в формате Python.
Доступны модули datetime и django.utils.timezone, поэтому в качестве значения можно указать, например, timezone.now.
Введите 'exit', чтобы выйти из этой подсказки
'''
type
timezone.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 или ниже.