diff --git a/src/servala/core/admin.py b/src/servala/core/admin.py index c521cb6..c7dbb0d 100644 --- a/src/servala/core/admin.py +++ b/src/servala/core/admin.py @@ -102,6 +102,7 @@ class ServiceAdmin(admin.ModelAdmin): list_filter = ("category",) search_fields = ("name", "description") autocomplete_fields = ("category",) + prepopulated_fields = {"slug": ["name"]} @admin.register(CloudProvider) diff --git a/src/servala/core/migrations/0007_service_slug.py b/src/servala/core/migrations/0007_service_slug.py new file mode 100644 index 0000000..e4e6e48 --- /dev/null +++ b/src/servala/core/migrations/0007_service_slug.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2b1 on 2025-03-24 14:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("core", "0006_service_definitions"), + ] + + operations = [ + migrations.AddField( + model_name="service", + name="slug", + field=models.SlugField( + default="slug", max_length=100, unique=True, verbose_name="URL slug" + ), + preserve_default=False, + ), + ] diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index f2fdd1f..986f9dd 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -44,6 +44,7 @@ class Service(models.Model): """ name = models.CharField(max_length=100, verbose_name=_("Name")) + slug = models.SlugField(max_length=100, verbose_name=_("URL slug"), unique=True) category = models.ForeignKey( to="ServiceCategory", on_delete=models.PROTECT,