Create Django Models
The first step of creating a database is designing a database structure. In Django, the database design is written in the models.py file. In this lesson, we'll explain how to edit models.py.
Django models are defined as Python classes. When you run the startapp
command, models.py is created.
By default, 'from django.db import models
' is already written at the top in models.py. This line of code imports a module called models
, which will be the basis of the custom models you are designing.
To make a new model, you need to add a sentence to create a new class. The basic syntax for creating a class for a new model is shown in the main figure.
There are four parts that you need to customize.
1. Model name
You can use any name (except for reserved words), but it should clearly represent the model that you are designing. One model becomes one data table in the database. You need to write in PascalCase because a Django model is defined as a Python class.
2. Field name
You can also use any name (except for reserved words) representing each model field (data table). Use snake_case for this part.
3. Field type
A field type defines the data type that each field can store. Django provides a list of field types, and you need to select one from the list. For example, CharField
(Character Field) can store small- to large-sized strings. The list of field types will be explained later. A field type is written in PascalCase.
4. Field option
There are options you can add in each field. The field options give additional rules for the field. For example, you can allow the field to be blank using the blank
option. Unlike the field type, the field option is written in snake_case.
Practice
Let's create a new app for this chapter and edit the models.py file. This chapter will guide you to create a database for employee learning programs.
1. Situation
HR skill development team is making a database to manage employees' digital skill learning courses. The team wants to manage the following information:
- which employees should sign which learning courses
- which employees should be prioritized for digital skill development
2. Create a new app "employee_learning"
Run the command below to create a new app under the same project created in the previous chapter.
python manage.py startapp employee_learning
You can confirm that a new directory named employee_learning has been created under the project directory.
3. Register the new app in settings.py
When you create a new app, you always need to add it in the settings.py file so that Django can recognize the newly created directory as a new app.
Edit the settings.py file by adding the yellow line, as shown below.
: INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'test_app', 'employee_learning', ] :
4. Edit the models.py file
Edit the models.py file under the employee_learning app directory. As the first step, create an Employee model with one data field.
The four points below are the parts you need to customize in the basic syntax.
- Model name:
Employee
- Field name:
name
- Field type:
CharField
- Field option:
max_length
from django.db import models
class Employee(models.Model):
name=models.CharField(max_length=25)