【发布时间】:2020-01-22 04:27:35
【问题描述】:
我想要做的是将站点显示名称和域从 example.com 更改为 mydomain.com 。通常,我可以进入 django 管理员并执行此操作。但我想使用数据迁移。我的代码如下:
from django.db import migrations
def change_site_name_from_example_to_mydomain_func(apps, schema_editor):
Site = apps.get_model('sites', 'Site')
site = Site.objects.get(name='example.com')
site.name = 'mydomain.com'
site.domain = 'mydomain.com'
site.save()
class Migration(migrations.Migration):
dependencies = [
('accounts', '0006_populate_database_createsuperuser'),
]
operations = [
migrations.RunPython(change_site_name_from_example_to_mydomain_func),
]
但是,我收到一条错误消息,提示没有网站这样的应用。问题是,如何在数据迁移中使用站点模型?
错误是这样的:
LookupError: No installed app with label 'sites'.
【问题讨论】:
-
Site是在什么应用中定义的,乍一看好像是在'accounts'中定义的,而不是'sites'? -
这个应用是django预定义的
-
可以通过
from django.contrib.sites.models import Site导入 -
您确定
django.contrib.sites在INSTALLED_APPS的列表中吗? -
但是,在数据迁移中,我应该得到一个
apps.get_app('app', 'model_name)的应用程序,我不知道如何为Site做它
标签: python django django-migrations