Django 未检测到应用程序模型中的更改

时间:2021-05-09 18:21:56

标签: python django django-models

我创建了一个名为 base 的应用程序,并向其中添加了一个新模型。但是,每当我运行 python3 manage.py makemigrations base 时,它都会显示 no changes detected

我已经添加了我的已安装应用

INSTALLED_APPS = [
  ...
  'base.apps.BaseConfig',
  ...
]

它确实在包含 __init__.py 文件的应用程序中有迁移文件夹。我想知道是什么导致了这个问题。

这是我的模型:

from django.db import models

# Create your models here.
class BaseModel(models.Model):
    created_at = models.DateTimeField(auto_now=True)
    modified_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        abstract = True

我的设置包含 4 个文件:

settings:
--__init__.py
-- dev.py
-- prod.py
-- staging.py
-- common.py

我的__init__.py

import os
from .common import *
from decouple import config

environment = config('DEV_ENV', cast=str)

if environment == "dev":
    from .dev import *
elif environment == "staging":
    from .staging import *
elif environment == "prod":
    from .prod import *

我也试过跑步

python3 manage.py makemigration base --settings=project.settings.dev 它仍然说 no changes detected

1 个答案:

答案 0 :(得分:2)

来自Abstract base classes doc

<块引用>

当您想将一些公共信息放入许多其他模型时,抽象基类很有用。您编写基类并将 abstract=True 放在 Meta 类中。 此模型将不会用于创建任何数据库表。相反,当它用作其他模型的基类时,其字段将添加到子类的字段中。

也就是说,如果你删除abstract = True或者设置abstract = False,Django会为你生成迁移文件!!!

相关问题