You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:50:23