Django makemigrations 正在为 Managed = False 的模型创建迁移

Aks*_*ari 10 python django

虽然 Django 文档https://docs.djangoproject.com/en/3.1/ref/models/options/#management 提到元数据中的 Managed = False 字段用于不创建迁移

当我调用 makemigrations 时,我仍在进行迁移。

这是模型的元:

class FieldOpsBooking(models.Model):
    .
    .
    class Meta:
        managed = False
        db_table = 'field_ops_booking'
Run Code Online (Sandbox Code Playgroud)

我在 makemigrations 之后得到了这个 python manage.py makemigrations

Migrations for 'user_analysis':
  user_analysis/migrations/0001_initial.py
    - Create model FieldOpsBooking
    - Create model RewardManagementLeads
Migrations for 'od_engagement':
  od_engagement/migrations/0001_initial.py
    - Create model NormalisedTonnage
Run Code Online (Sandbox Code Playgroud)

它还创建 0001_initial.py 文件,并应用所有迁移。

任何帮助表示赞赏

Raz*_*ein 13

我用具有 Managed=False 的模型检查了自己的项目:是的,迁移文件中有一个条目,例如:

    operations = [
        migrations.CreateModel(
            name='xyz',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ],
            options={
                'db_table': 'xyz_table',
                'managed': False,
            },
        ),
Run Code Online (Sandbox Code Playgroud)

但是:当您执行“makemigration”时,这不会在数据库级别创建新表。抱歉,如果坚持,但你原来的解决方案是绝对正确的!

这是来自关于抽象基类的 django 文档:“……因为它是一个抽象基类……并且不能直接实例化或保存。”