首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError: fromisoformat:参数必须是str

TypeError: fromisoformat:参数必须是str
EN

Stack Overflow用户
提问于 2022-10-20 14:39:03
回答 2查看 112关注 0票数 0

我意外地将“1”作为models.DateField()的默认值。现在,Django每次尝试迁移时都会抛出一个错误,即使我使用( CharacterField ())删除了CharacterField/更改了默认值。

有办法解决这个问题吗?

代码语言:javascript
运行
复制
Applying mainApp.0006_test_date...Traceback (most recent call last):
  File "/Users/di/Code/Schule/GymnasiumApp/manage.py", line 22, in <module>
    main()
  File "/Users/di/Code/Schule/GymnasiumApp/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/core/management/base.py", line 402, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/core/management/base.py", line 448, in execute
    output = self.handle(*args, **options)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/core/management/base.py", line 96, in wrapped
    res = handle_func(*args, **kwargs)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/core/management/commands/migrate.py", line 349, in handle
    post_migrate_state = executor.migrate(
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/migrations/executor.py", line 135, in migrate
    state = self._migrate_all_forwards(
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
    state = self.apply_migration(
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/migrations/migration.py", line 130, in apply
    operation.database_forwards(
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/migrations/operations/fields.py", line 108, in database_forwards
    schema_editor.add_field(
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/backends/sqlite3/schema.py", line 394, in add_field
    self._remake_table(model, create_field=field)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/backends/sqlite3/schema.py", line 237, in _remake_table
    self.effective_default(create_field),
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py", line 423, in effective_default
    return field.get_db_prep_save(self._effective_default(field), self.connection)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 925, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 1438, in get_db_prep_value
    value = self.get_prep_value(value)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 1433, in get_prep_value
    return self.to_python(value)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 1389, in to_python
    parsed = parse_date(value)
  File "/Users/di/Code/Schule/GymnasiumApp/venv/lib/python3.10/site-packages/django/utils/dateparse.py", line 74, in parse_date
    return datetime.date.fromisoformat(value)
TypeError: fromisoformat: argument must be str
EN

回答 2

Stack Overflow用户

发布于 2022-10-20 14:52:45

如果是最后一次迁移,则可以在dirs apps/app/migrations中删除0006_*****.py迁移,并使用命令makemigrations在更改字段中的默认值后重新创建迁移。

如果不是最后一次,则必须删除0006_***之后的所有next,更改DateField的默认值,并使用makemigrations命令重新创建迁移。在这种情况下,您可能需要销毁db并重新创建它以防止其他问题。

票数 2
EN

Stack Overflow用户

发布于 2022-10-20 14:54:02

您必须将数据库中的每个“1”更改为正确的值。

您可以尝试像UPDATE SET ='2022-01-01‘之类的东西,比如'1';

您可以使用以下命令(在linux上)打开数据库:

sqlite3 db.sqlite3 UPDATE SET ='2022-01-01‘,类似于'1';

它还可以与cmd一起工作:

sqlite3 .open db.sqlite3更新集='2022-01-01‘,类似于'1';

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74141749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档