Django执行migrate时报错:'str' object has no attribute '_meta' 求助
Django迁移报错:AttributeError: 'str' object has no attribute '_meta'
我独自开发一个小型Django项目,之前数据库迁移工作一切正常,但修改models.py中的tags字段后出现问题。该字段原本关联taggit库的TaggableManager,现在改为关联自定义Tag模型的ManyToManyField。
每次执行python manage.py migrate生成数据库时,都会抛出如下错误:
Applying inventory_app.0014_item_tags...Traceback (most recent call last): File "/Users/ilianhaesler/Documents/Work/inventory/inventory/manage.py", line 22, in <module> main() File "/Users/ilianhaesler/Documents/Work/inventory/inventory/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line utility.execute() File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/core/management/__init__.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/core/management/base.py", line 354, in run_from_argv self.execute(*args, **cmd_options) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/core/management/base.py", line 89, in wrapped res = handle_func(*args, **kwargs) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/core/management/commands/migrate.py", line 244, in handle post_migrate_state = executor.migrate( File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/db/migrations/executor.py", line 117, in migrate state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/db/migrations/executor.py", line 227, in apply_migration state = migration.apply(state, schema_editor) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/db/migrations/migration.py", line 126, in apply operation.database_forwards(self.app_label, schema_editor, old_state, project_state) File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/db/migrations/operations/fields.py", line 104, in database_forwards schema_editor.add_field( File "/Users/ilianhaesler/Documents/Work/inventory/inventory-env/lib/python3.10/site-packages/django/db/backends/sqlite3/schema.py", line 328, in add_field if field.many_to_many and field.remote_field.through._meta.auto_created: AttributeError: 'str' object has no attribute '_meta'
错误指向较早的0014迁移文件(目前已有约30个迁移文件),该文件内容如下:
# Generated by Django 4.1 on 2022-09-16 07:34 from django.db import migrations import taggit.managers class Migration(migrations.Migration): dependencies = [ ('inventory_app', '0013_item_gelber_kleber'), ] operations = [ migrations.AddField( model_name='item', name='tags', field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), ), ]
当前Item模型定义如下:
class Item(models.Model): # Additional Attributes name = models.CharField(max_length=150, default="", blank=False, verbose_name=_('Name')) tags = models.ManyToManyField("Tag", blank=True) def __str__(self): return self.name
有没有人遇到过类似问题?
内容的提问来源于stack exchange,提问作者Ilian Gion Häsler
相关产品推荐
相关产品推荐

