gpt4 book ai didi

python - makemigrations reponses 指定 app_label 时未检测到任何更改

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:09 24 4
gpt4 key购买 nike

我有 2 个 mysql 数据库,我想为第二个数据库 (analysis_db) 创建一个新模型,但是在运行 makemigrations 之后,它显示“未检测到任何更改”。这是我的代码

在 settings.py 中(我将 myapp 添加到 INSTALLED_APPS )

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': DB_DEFAULT_NAME,
'USER': DB_USER,
'PASSWORD': DB_PASSWORD,
'HOST': DB_HOST,
'PORT': '',
'OPTIONS': {
'sql_mode': 'traditional',
}
},
'analysis_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': DB_ANALYSIS_NAME,
'USER': DB_USER,
'PASSWORD': DB_PASSWORD,
'HOST': DB_HOST,
'PORT': '',
'OPTIONS': {
'sql_mode': 'traditional',
}
}
}
DATABASE_ROUTERS = ['my_project.routers.TestRouter']

在 routers.py 中

class TestRouter:
"""
A router to control all database operations on models in the
auth application.
"""
def db_for_read(self, model, **hints):
if model._meta.app_label == 'analysis_data':
return 'analysis_db'
return None

def db_for_write(self, model, **hints):
if model._meta.app_label == 'analysis_data':
return 'analysis_db'
return None

def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'analysis_data' or \
obj2._meta.app_label == 'analysis_data':
return True
return None

def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'analysis_data':
return db == 'analysis_db'
return None

在模型.py中

class TestModel(models.Model):
id = models.AutoField(primary_key=True)
val1 = models.IntegerField()
val2 = models.IntegerField()

class Meta:
app_label = 'analysis_data'
db_table = 'test_table_on_db'

但是,如果我从 models.py 中删除 app_label = 'analysis_data',然后再次运行 makemigrations,它会起作用,但是表是在默认数据库上创建的。有人遇到同样的问题吗?

谢谢:)

最佳答案

我认为您模型上的“app_label”需要设置为安装在 INSTALLED_APPS 设置中的应用程序的名称。您提到您将“myapp”添加到 INSTALLED_APPS,但是“analysis_data”呢?

如果您使用的是应用名称“analysis_data”,但没有使用该名称的应用,那么它不会为该应用进行迁移,因为它不存在。

因此,要解决此问题,您应该将模型的“analysis_data”移动到另一个 Django 应用程序(您可以在同一个项目中有多个应用程序)并将其显式添加到您的 INSTALLED_APPS。然后,当您运行 python manage.py makemigrations analysis_data 时,它应该可以工作。

关于python - makemigrations reponses 指定 app_label 时未检测到任何更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52287418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com