Pada modul ini kita akan membuat dynamic slug menggunakan signals. Pembahasan ini sebetulnya tidak berhubungan dengan REST API, namun lebih ke fitur untuk mengisi field slug secara otomatis.
Buat file baru pada direktori backend (gunakan direktori aplikasi Anda) dengan nama signals.py (nama file harus sesuai).
from django.db.models.signals import pre_save from django.dispatch import receiver from django.utils.text import slugify from .models import Article @receiver(pre_save, sender=Article) def add_slug(sender, instance, *args, **kwargs): if instance and not instance.slug: slug = slugify(instance.title) instance.slug = slug
Kemudian buka file backend/apps.py, update code seperti berikut:
from django.apps import AppConfig class BackendConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'backend' def ready(self): import backend.signals
Selanjutnya buka file backend/init.py, tambahkan code berikut:
default_app_config = "backend.apps.BackendConfig"
Sekarang slug akan dibuat secara otomatis.
Anda dapat mencobanya melalui shell, panggil melalui command prompt:
$ python manage.py shell
Lalu dalam shell, jalankan perintah berikut: (tanda >>> jangan ditulis)
>>> from backend.models import Article
>>> article = Article(title="Second Title", description="Lorem ipsum second description")
>>> article.save()
Jika Anda periksa melalui web browser, sesuai ekspektasi, field slug sudah terisi secara otomatis.