From 3f9a1dd4e1974b69ec59902f9414d645d9365127 Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Wed, 3 Jun 2026 09:00:16 +0330 Subject: [PATCH] make slugs editable through admin panel --- apps/blog/models.py | 11 ++++++----- apps/course/serializers/admin.py | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/blog/models.py b/apps/blog/models.py index bdb4765..8e82f85 100644 --- a/apps/blog/models.py +++ b/apps/blog/models.py @@ -116,10 +116,11 @@ class Blog(models.Model): return None def save(self, *args, **kwargs): - try: - self.slug = generate_language_slugs(self.title) - except Exception: - self.slug = [] + if not self.slug: + try: + self.slug = generate_language_slugs(self.title) + except Exception: + self.slug = [] super().save(*args, **kwargs) @@ -205,4 +206,4 @@ class BlogSeo(models.Model): def __str__(self): lang = getattr(self.language, 'code', None) if self.language else None - return f"SEO({lang or '-'}) - {self.title or ''}" \ No newline at end of file + return f"SEO({lang or '-'}) - {self.title or ''}" diff --git a/apps/course/serializers/admin.py b/apps/course/serializers/admin.py index 876a7ba..8f540a5 100644 --- a/apps/course/serializers/admin.py +++ b/apps/course/serializers/admin.py @@ -84,6 +84,7 @@ class AdminCourseListSerializer(serializers.ModelSerializer): class AdminCourseDetailSerializer(serializers.ModelSerializer): + slug = serializers.SlugField(required=False, allow_blank=True) category_name = serializers.CharField(source='category.name', read_only=True) professor_name = serializers.CharField(source='professor.fullname', read_only=True) thumbnail = FileFieldSerializer(required=False, allow_null=True) @@ -124,7 +125,7 @@ class AdminCourseDetailSerializer(serializers.ModelSerializer): 'created_at', 'updated_at' ] - read_only_fields = ['id', 'slug', 'final_price', 'created_at', 'updated_at'] + read_only_fields = ['id', 'final_price', 'created_at', 'updated_at'] def get_participant_count(self, obj): return obj.participants.count()