SlugField — Django Models

Python Methods and Functions

Slug — it is essentially a short label for something, containing only letters, numbers, underscores, or hyphens. They are commonly used in URLs. For example, in a typical blog post URL: 

Here the last add-the-slug-field-inside-django-model is a slug.


SlugField in Django is like CharField where you also you can specify the max_length attribute. If max_length is not specified, Django will use the default length of 50. This also assumes that Field.db_index is set to True . It is often useful to automatically prefill a SlugField based on a different value. For validation use validate_slug or validate_unicode_slug. ,


 field_name = models.SlugField (max_length = 200,  ** options ) 

SlugField has the following optional arguments:


The maximum length (in characters) of the field. Maximum max_length applies at the database level and when validating Django using MaxLengthValidator .


If True, the field accepts Unicode letters in addition to ASCII letters. Default False.

Django SlugField Model Explanation

Illustration of a SlugField using an example. Consider a project named pythonengineering that has an application named geeks .

Refer to the following articles to check how to create a project and an app in Django.

Enter the following code into the file of the geeks application.

from django.db import models

from django.db.models import Model

# Create your models here.


class GeeksModel (Model):

geeks_field = models.SlugField (max_length = 200 )

Add the geek app to INSTALLED_APPS

# App definition



  ' django.contrib.admin' ,

'django.contrib.auth' ,

'django.contrib.contenttypes' ,

'django.contrib.sessions' ,

'django.contrib.messages' ,

'django.contrib.staticfiles' ,

'geeks' ,


Now when we run makemigrations from the terminal,

 Python makemigrations 

A new folder named migrations will be created in the geeks directory with a file named 0001_initial. py

# Generated by Django 2.2.5 at 2019-09-25 06:00


from django.db import migrations, models


class Migration (migrations.Migration):


initial = True


  dependencies = [



operations = [

migrations.CreateModel (

name = ' GeeksModel' ,

fields = [

( 'id'

models.AutoField (

  auto_created = True ,

  primary_key = True ,

serialize = False

verbose_name = 'ID'


  ( 'geeks_field'

  model s.SlugField (

max_length = 200 ,





Now run,

 Python migrate 

Thus, the geeks_field SlugField is generated when migrations are run in the project.

How to use SlugField?

SlugField is used to store mostly URL paths after a specific URL. To learn more about how to properly add a SlugField to your Django Project, refer to this article — 

# import the model
# from the geek app

from geeks.models import GeeksModel

# instantiate
# GeeksModel

geek_object = GeeksModel. objects.create (geeks_field = "") ()

Now let's check it out on administrator a running server. We have created a GeeksModel instance. 

Field options

Field options — they are arguments given to each field to apply some constraint or to convey a particular characteristic to a particular field. For example, adding the null = True argument to the SlugField will allow it to store empty values ​​for that table in a relational database. 
Here are the field options and attributes that SlugField can use.

Field Options Description
Null If True , Django will store empty values ​​as NULL in the database. Default is False.
Blank If True , the field is allowed to be blank ... Default is False.
Choices An iterable (eg, a list or tuple) of 2-tuples to use as choices for this field.
Default The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.
help_text Extra “help” text to be displayed with the form widget. It's useful for documentation even if your field isn't used on a form.
primary_key If True, this field is the primary key for the model .
Unique If True, this field must be unique throughout the table.