django doc说要在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
答案 0 :(得分:2)
Django项目中的每个应用都必须具有唯一的label。命名您的应用sites
并不是一个好主意 - 它会与django.contrib.sites
应用发生冲突,除非您更改应用配置类中的标签。
如果您有一个特定于您的项目的现有应用程序,则可以使用该应用程序存储数据迁移。
或者选择其他名称,例如mysites
。使用./manage.py startapp mysite
创建应用,将应用添加到INSTALLED_APPS
,然后创建空白迁移。