Slug 字段不适用于 Django 中的孟加拉语。如何用孟加拉语处理 slug

Slug field does not work for Bengali language in django. How to work with slug in bengali

Django slug 字段不适用于英语以外的任何其他语言。我想用孟加拉语工作 这是代码

class Post(models.Model):
    title = models.CharField(max_length=140)
    category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
    content = RichTextField(default="")
    image = models.ImageField(upload_to="media/post")
    url = models.SlugField(unique=True, max_length=250, null=True, blank=True)
    likes = models.IntegerField(default=0)
    created_date = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.title}"

    def save(self, *args, **kwargs):  # new
        if not self.url:
            slug_str = f"{self.title}-{datetime.datetime.now()}"
            self.url = slugify(slug_str)
        return super().save(*args, **kwargs)

allow_unicode=True 传递给您的 SlugField 以接受 unicode 字符

class Post(models.Model):
    ...
    url = models.SlugField(allow_unicode=True, unique=True, max_length=250, null=True, blank=True)

然后当你生成 slug 时你需要 pass the same parameter to django.utils.text.slugify

def save(self, *args, **kwargs):  # new
    if not self.url:
        slug_str = f"{self.title}-{datetime.datetime.now()}"
        self.url = slugify(slug_str, allow_unicode=True)
    return super().save(*args, **kwargs)

这是我如何在我的一个项目中完成此操作的示例。

标题:西班牙马德里孟加拉语新闻俱乐部两年一度的会议

您可以使用 SlugField 并允许 unicode,但您会得到 slug:sapnar-madrad-bal-paraskalbar-dabarashak-sammalan

让我们来解决这个问题:

models.py

    slug = models.CharField(
        max_length=200,
        unique=True, blank=True, null=True, editable=True
    )


    def save(self,*args, **kwargs):
        if not self.slug:
            self.slug = self.title.replace(" ", "-").replace(",", "")
        return super(BanglaModel, self).save(*args, **kwargs)

输出数据:Bangla-Pressclub-Biennial-Conference-in-Madrid-Spain