django 文档说要更改 django.contrib.sites 框架中的站点名称和域,应该使用迁移 [1]。
但是他们忘记提到我应该把这个迁移放在哪里。我试图创建一个名为“sites”的目录和一个名为“django.contrib.sites”的目录。但是无论我将迁移放在哪个目录中,manage.py migration 总是说没有要更新的内容。
我还尝试运行 python manage.py makemigrations --empty sites,但随后在 lib 目录中创建了迁移:ve/lib/python3.5/site-packages/django/contrib/sites/migrations/0003_auto_20160904_2144.py。这可能是正确的行为,但我无法在源代码管理下设置我的更改。
万一我的迁移有问题,这里是:
from __future__ import unicode_literals
from django.db import migrations, models
def set_site_name(apps, schema_editor):
Sites = apps.get_model('django.contrib.sites', 'site')
site = Sites.objects.filter(id=1).first()
if site != None:
site.name = "name"
site.domain = "name.com"
class Migration(migrations.Migration):
initial = True
operations = [
migrations.RunPython(set_site_name),
]
所以我的问题是:django 希望在哪里找到这些迁移?
非常感谢您的帮助。
[1] https://docs.djangoproject.com/en/1.10/ref/contrib/sites/#enabling-the-sites-framework
请您参考如下方法:
Django 项目中的每个应用程序都必须有一个唯一的 label .将您的应用程序命名为 sites 不是一个好主意 - 它会与 django.contrib.sites 应用程序发生冲突,除非您更改应用程序配置类中的标签。
如果您有特定于项目的现有应用,则可以使用该应用来存储数据迁移。
或者选择一个不同的名称,如 mysites。使用 ./manage.py startapp mysite 创建应用程序,将应用程序添加到您的 INSTALLED_APPS,然后创建空白迁移。
