Django has built-in support for schema migrations. Below, we’ll walk through the process of setting up a Django project with Nile and running your first migration.

1

Install Django

If you don’t already have Django installed, you can install it using pip:

pip install django
2

Create a new Django project

django-admin startproject myproject

This will create a new Django project in the myproject directory.

3

Create a new app

cd myproject
python manage.py startapp myapp

This will create a new Django app in the myproject directory.

If all went well, the myproject directory should now have the following structure:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    myapp/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
4

Setting up Nile Database

Edit the myproject/settings.py file to include the Nile database URL:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "mydb",
        "USER": "myuser",
        "PASSWORD": "mypassword",
        "HOST": "us-west-2.db.thenile.dev",
        "PORT": "5432",
    }
}

You can find your database credentials in the Nile dashboard.

5

Run the migrations built-in migrations

Django has several default modules that need database tables created. To create these tables, run the following command:

python manage.py migrate

This will create the tables in the database.

6

Create a new model

In myapp/models.py, create a new model:

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=255)

And update the installed apps in myproject/settings.py to include your app:

INSTALLED_APPS = [
    'myapp.apps.MyappConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
7

Create a new migration

To create a new migration, run the following command:

python manage.py makemigrations myapp

This will create a new migration file in the myapp/migrations directory.

8

Run the migration

To run the migration, run the following command:

python manage.py migrate

This will apply the migration to the database.

Connect to your database and see a new table created, called myapp_mymodel.