Django datetime TypeError: fromisoformat: аргумент должен быть str
Internal Server Error: /api/orders/add/
Traceback (most recent call last):strong tenter image description hereext
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\views\generic\base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
raise exc
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\rest_framework\decorators.py", line 50, in handler
return func(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\backend\base\views\order_views.py", line 31, in addOrderItems
order = Order.objects.create(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\query.py", line 514, in create
obj.save(force_insert=True, using=self.db)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 806, in save
self.save_base(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 857, in save_base
updated = self._save_table(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 1000, in save_table
results = self.do_insert(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\base.py", line 1041, in do_insert
return manager.insert(
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\query.py", line 1434, in insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1620, in execute_sql
for sql, params in self.as_sql():
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1547, in as_sql
value_rows = [
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1548, in
[
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1549, in
self.prepare_value(field, self.pre_save_val(field, obj))
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\sql\compiler.py", line 1487, in prepare_value
value = field.get_db_prep_save(value, connection=self.connection)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields_init.py", line 910, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields_init.py", line 1546, in get_db_prep_value
value = self.get_prep_value(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields_init.py", line 1524, in get_prep_value
value = super().get_prep_value(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields_init.py", line 1403, in get_prep_value
return self.to_python(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\db\models\fields_init.py", line 1485, in to_python
parsed = parse_datetime(value)
File "C:\Users\kalya\OneDrive\Desktop\my app\myenv\lib\site-packages\django\utils\dateparse.py", line 114, in parse_datetime
return datetime.datetime.fromisoformat(value)enter image description here
Вы не можете использовать 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 или ниже.