I have a problem creating a slug based on the title and pk, due to the use of parler. I'm using Parler for multilinguality in my API, and when I try to create a slug like title-pk I'm getting various bugs. My model: class Events(TranslatableModel): ... translations = TranslatedFields( title=models.CharField(max_length=255, verbose_name=_("Event title")), body=MDTextField(verbose_name=_("Event body")), ) slug = models.SlugField(blank=True, max_length=255, verbose_name=_("Event slug")) ... So, I tried using the save() method, but I got a slug like -None or -pk. def save(self, *args, **kwargs): if not self.slug: title = self.safe_translation_getter("title", language_code="uk") base_slug = slugify(title) self.slug = f"{base_slug}-{self.pk}" super().save(*args, **kwargs) I also used a signal, which also did not work. @receiver(post_save, sender=Events) def generate_slug_after_translation(sender, instance, **kwargs): if not instance.slug: uk_title = instance.safe_translation_getter("title", language_code="uk") if uk_title: base_slug = f"{uk_title}-{instance.pk}" instance.slug = slugify(base_slug)[:255] instance.save(update_fields=["slug"]) What did I do wrong, and what should I do next? Continue reading...