【发布时间】:2021-04-06 18:35:14
【问题描述】:
虽然 Django 文档 https://docs.djangoproject.com/en/3.1/ref/models/options/#managed 提到在 meta 中使用 managed = False 字段用于不创建迁移
当我调用 makemigrations 时,我仍在进行迁移。
这是模型的元数据:
class FieldOpsBooking(models.Model):
.
.
class Meta:
managed = False
db_table = 'field_ops_booking'
我在做迁移后得到了这个
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
它会创建 0001_initial.py 文件,其中包含所有要应用的迁移。
感谢任何帮助
【问题讨论】:
-
您可以在 Meta 中使用
abstract=True。我认为这应该可行。 -
@AjayLingayat 有效,将其添加为答案
-
请查看 0001_initial.py 并检查是否生成了新表 - 我猜不是,因为您的代码似乎正确
-
@Razenstein 是的,在 0001_initial.py 中创建了一个新表。正如 Ajay Lingayat 评论的那样,添加 abstract = True,它工作正常。不创建任何迁移
-
一旦你根据你的抽象类定义了一个“真实”的类,你就会遇到同样的问题!您是否在没有 managed=false 的情况下进行了第一次 makemigrations?