[Python] Slug is not created correctly due to using django parler

Discussão em 'Python' iniciado por Stack, Julho 8, 2025.

  1. Stack

    Stack Membro Participativo

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

Compartilhe esta Página