+

SlugField — Django Models

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:

 https://www.python.engineering/add-the-slug-field-inside-django-model/amp/ 

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

SlugField:

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. ,

Syntax

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

SlugField has the following optional arguments:

 SlugField.max_length 

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

 SlugField.allow_unicode 

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 models.py 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

 

INSTALLED_APPS = [

  ` 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 manage.py 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 manage.py 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 = "")

geek_object.save ()

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.

Get Solution for free from DataCamp guru