bale
bale

Reputation: 23

Django django.contrib.sites where to put migration?

the django doc says to change the sites name and domain in the django.contrib.sites framework one should use a migration [1].

But they forgot to mention where I should put this migration. I tried to create a directory named "sites" and a directory named "django.contrib.sites". But no matter in which directory I put my migration, manage.py migration always says there is nothing to update.

I also tried to run python manage.py makemigrations --empty sites, but then the migration is created in the lib directory: ve/lib/python3.5/site-packages/django/contrib/sites/migrations/0003_auto_20160904_2144.py. This may be correct behaviour, but then I cannot set my change under source control.

In case something is wrong with my migration, here it is:

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),
    ]

So my question is: where does django expect to find those migrations?

Thank you very much in advance for your help.

[1] https://docs.djangoproject.com/en/1.10/ref/contrib/sites/#enabling-the-sites-framework

Upvotes: 2

Views: 1536

Answers (1)

Alasdair
Alasdair

Reputation: 308919

Each app in a Django project must have a unique label. Naming your app sites isn't a good idea - it will clash with the django.contrib.sites app unless you change the label in the app config class.

If you have an existing app specific to your project, you could use that app to store the data migration.

Alternatively choose a different name like mysites. Create the app with ./manage.py startapp mysite, add the app to your INSTALLED_APPS, then create a blank migration.

Upvotes: 1

Related Questions