Skip to main content
 首页 » 编程设计

python之Django django.contrib.sites 迁移到哪里

2024年10月17日36tintown

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,然后创建空白迁移。