Django models

What is a django model?

A model is a class that matches a database table (or collection).
Models are defined in the apps models.py file, /app/models.py.

Say what? Let’s make an app with a database model!

You may like: Python and Django Full Stack Web Developer Bootcamp

Models example

We start a new project, movie database.

django-admin startproject movie_site

Inside the directory movie_site we now see:

manage.py movie_site

Configure database

Open movie_site/settings.py, there are the lines:

A database is already set up!

We’ll use the default database system: sqlite3.

Note: Django supports many databases including:

  • SQLite (django.db.backends.sqlite3)
  • MySQL (django.db.backends.mysql)
  • MongoDB (django_mongodb_engine)
  • Oracle (django.db.backends.oracle)
  • PostGreSQL (django.db.backends.postgresql_psycopg2)
  • NoSQL DB

 
Create your database with this command:

python manage.py migrate

Now you’ll see lots of lines:

Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial… OK
Applying auth.0001_initial… OK
Applying admin.0001_initial… OK
Applying admin.0002_logentry_remove_auto_add… OK
Applying contenttypes.0002_remove_content_type_name… OK
Applying auth.0002_alter_permission_name_max_length… OK
Applying auth.0003_alter_user_email_max_length… OK
Applying auth.0004_alter_user_username_opts… OK
Applying auth.0005_alter_user_last_login_null… OK
Applying auth.0006_require_contenttypes_0002… OK
Applying auth.0007_alter_validators_add_error_messages… OK
Applying auth.0008_alter_user_username_max_length… OK
Applying sessions.0001_initial… OK

Good job!

Create an app

Django sites can have many apps. Each app is like a plugin.

Let’s make a movie details app.

python manage.py startapp movies

You have just created an app!
There’s a new folder: movies.

Note: Django doesn’t know it should use this app yet.
Apps are not added by default.. Let’s teach django.

 

Open movie_site/settings.py.
Scroll down to the line INSTALLED_APPS and add the line ‘movies’.

Create a movie model

We can create our model now. In the movies/models.py you can define all models.
Create a class for your movies model. The class will map to the database table.

If you don’t know classes and object orientated programming, take this couse:
Python and Django Full Stack Web Developer Bootcamp

We class will contain attributes of our movie object.

Run the command;

python manage.py makemigrations movies

This will output:

Migrations for ‘movies’:
movies/migrations/0001_initial.py
– Create model Movie

Also type this command:

python manage.py migrate movies

The magic continues:

Operations to perform:
Apply all migrations: movies
Running migrations:
Applying movies.0001_initial… OK

In English, that means it’s just created our database table!

Browse database

Open the database file (db.sqlite3) with sqlitebrowser.

django database model

Yeehaw! Our movie model is now our database.

Previous Post
Next Post

Leave a Reply