Slug 字段不适用于 django 中的孟加拉语。如何在孟加拉语中使用蛞蝓

Posted

技术标签:

【中文标题】Slug 字段不适用于 django 中的孟加拉语。如何在孟加拉语中使用蛞蝓【英文标题】:Slug field does not work for Bengali language in django. How to work with slug in bengali 【发布时间】:2021-12-25 09:04:21 【问题描述】:

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)

【问题讨论】:

您可以添加自己的 slug 字段,名称为 CharField。然后你可以做任何事情。不要在你的情况下使用 slug 字段。 我已经在这里回答了这样的问题***.com/a/69765200/15042684试试吧。 【参考方案1】:

将 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)

【讨论】:

您使用的是哪个 slugify?默认 django.utils.text slugify 还是 python-slugify? @Mehady django.utils.text.slugify,我之前已经链接到该函数的文档,但现在更清楚了

以上是关于Slug 字段不适用于 django 中的孟加拉语。如何在孟加拉语中使用蛞蝓的主要内容,如果未能解决你的问题,请参考以下文章

django相关字段解释(slug)

django中的Slug字段错误

无法将关键字 u'slug' 解析为 Django 中的字段错误?

Django:为数据库中的现有条目生成 slug 字段数据

模型形式中的 django auto slug,例如 django admin 中的预填充字段

如何在 Django 中自定义 slug 字段?