Django django.contrib.sites在哪里放置迁移?

时间:2016-09-04 19:52:18

标签: python django django-models

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

1 个答案:

答案 0 :(得分:2)

Django项目中的每个应用都必须具有唯一的label。命名您的应用sites并不是一个好主意 - 它会与django.contrib.sites应用发生冲突,除非您更改应用配置类中的标签。

如果您有一个特定于您的项目的现有应用程序,则可以使用该应用程序存储数据迁移。

或者选择其他名称,例如mysites。使用./manage.py startapp mysite创建应用,将应用添加到INSTALLED_APPS,然后创建空白迁移。