Django slug field does not work for any other language except English. I want to work with Bengali language here is the code
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)
Pass allow_unicode=True to your SlugField
to accept unicode chars
class Post(models.Model):
...
url = models.SlugField(allow_unicode=True, unique=True, max_length=250, null=True, blank=True)
Then when you generate the slug you need to 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)