Я хочу создать уникальный слаг. Я хочу создать уникальный слаг.Я использую некоторые методы для генерации уникальных слагов, но у меня есть проблемы с ними.
это моя модель и мой метод создания уникального слага:
#Models.py
class MyModel(models.Model):
slug = models.SlugField(null=True, blank=True, unique=True)
def _get_unique_slug(self, slug_input):
slug = slugify(slug_input)
unique_slug = slug
num = 1
while Curriculum.objects.filter(slug=unique_slug).exists():
unique_slug = '{}-{}'.format(slug, num)
num += 1
return unique_slug
def save(self, *args, **kwargs):
if not self.id: # Create
if not self.slug: # slug is blank
self.slug = self._get_unique_slug(slug_input=self.title)
else: # slug is not blank
self.slug = self._get_unique_slug(slug_input=self.slug)
else: # Update
self.slug = self._get_unique_slug(slug_input=self.slug)
super(Curriculum, self).save(*args, **kwargs)
Этот метод имеет две задачи :
1.Каждый раз, когда я сохраняю каждый объект (даже не изменяя его) , слизняк изменяется и к нему добавляется '-1'.
2.Для некоторых языков, таких как арабский и фарси (персидский), слизняк не создавался. как я могу решить эти проблемы?