Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 16, 2021 03:34 pm GMT

Create Model in Django - Tutorial for Beginners

Hello Coders,

This article aims to help beginners to understand how to Create a Model in Django Framework by coding a new app from scratch and use mostly the terminal. The sample source code can be downloaded from Github (MIT License) and extended for hobby and commercial products. For newcomers, Django is a high-level Python Web framework built by experienced developers that encourages rapid development and clean, pragmatic design.

Thanks for reading! - Content provided by App Generator.

Let's Code Django

Check Python Version - recommended version is Python3

$ python --versionPython 3.8.4        <-- All good, we have a 3.x version

Create/activate a virtual environment - Unix-based system

$ virtualenv env$ source env/bin/activate  

For Windows, the syntax is slightly different

$ virtualenv env$ .\env\Scripts\activate

Install Django

$ pip install django

Create a new Django Project

$ mkdir django-create-model$ cd django-create-model

Inside the new directory, we will invoke startproject subcommand:

$ django-admin startproject config .

Note: Take into account that . at the end of the command.

Setup the database

$ python manage.py makemigrations$ python manage.py migrate

Start the app

$ python manage.py runserver $$ # Access the web app in browser: http://127.0.0.1:8000/

At this point we should see the default Django page in the browser:

Django - Default Project Page.

Create a new Django application

$ python manage.py startapp sample

Visualize the default SQL settings - config/settings.py

# File: config/settings.py (partial content)...DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': BASE_DIR / 'db.sqlite3',    }}...

Define a new model Books in sample application. The below changes should be added to sample/models.py:

# File: sample/models.pyfrom django.db import models                       class Book(models.Model):                                 # <- NEW    title            = models.CharField(max_length=100)   # <- NEW     author           = models.CharField(max_length=100)   # <- NEW    publication_date = models.DateField()                 # <- NEW 

Update Project Configuration to use the new model - The sample application must be added in the project configuration to INSTALLED_APPS section.

# File: config/settings.py (partial content)...INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'sample'                        # <- NEW ]...

Tip - for a quick check over latest changes we can run check subcommand.

$ python manage.py checkSystem check identified no issues (0 silenced).  

Generate the SQL code

$ python manage.py makemigrations  # generate the SQL codeMigrations for 'sample':  sample\migrations\0001_initial.py    - Create model Book

Apply changes on database

$ python manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, sample, sessionsRunning migrations:  Applying sample.0001_initial... OK

Use the model via CLI

Once the model is created we can use it via the Django shell

$ python manage.py shell>>> >>> from sample.models import Book     # import the Book model in our context>>> from django.utils import timezone  # used to provide the value for publication_date>>>>>> book1 = Book(title='The Adventures of Tom Sawyer', author='Mark Twain', publication_date=timezone.now() )>>> book1.save()                       # save the new book

List all books (using the CLI)

$ python manage.py shell>>> >>> from sample.models import Book>>> Book.objects.all()<QuerySet [<Book: Book object (1)>]>

We can see our new book retuned by the query. Let's improve the information that describe the object.

Django Model - add text representation of an object

To achieve this goal, we should define the __str__() method for the Book model

# File: sample/models.pyfrom django.db import models                       class Book(models.Model):     title            = models.CharField(max_length=100)     author           = models.CharField(max_length=100)    publication_date = models.DateField()     def __str__(self):       # <- NEW        return self.title    # <- NEW

Let's restart the Django console and check the results:

$ python manage.py shell>>> >>> from sample.models import Book>>> Book.objects.all()<QuerySet [<Book: The Adventures of Tom Sawyer>]>

Use the model via Admin Section

Django comes with an admin section our-of-the box that allows us to manage with ease all models defined in project.
To manage the Book model in the administration console we need to create a superuser (aka the admin) and after register the Book model to be visible in the admin section.

Create the superuser

$ python manage.py createsuperusersername (leave blank to use 'sm0ke'): adminEmail address: [email protected]: Password (again):Superuser created successfully.

Register Book model to be visible in the admin section - Edit sample/admin.py as below:

# File: sample/admin.pyfrom django.contrib import adminfrom .models import Book        # <- NEWadmin.site.register(Book)       # <- NEW

Authenticate as admin - http://localhost:8000/admin/

At this point we should see the Books model in the UI and able to execute CRUD operations.

Create Django Model - Admin Interface.

Create Django Model - List Model Items

Create Django Model - List Model Items.

Django Create Model - Edit Records

image

Thanks for reading! Feel free to AMA in the comments section.

More Django Resources


Original Link: https://dev.to/sm0ke/create-model-django-1536

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To