Я работаю над проектом, который требует уникальных слагов.Слагы динамически создаются в пользовательском методе save () с использованием имени объекта.
class SlugMixin(models.Model):
def save(self, *args, **kwargs):
slug = striptags(self.name)
self.slug = slugify(slug)
super(SlugMixin, self).save(*args, **kwargs)
class Meta:
abstract = True
имя не является уникальным, поэтому возможно иметь кратные значения одного и того же слага.Таким образом, решение, с которым я работал, - добавление идентификатора экземпляра к его слагу в post_save.Проблема здесь заключается в попытке обновить слаг с помощью идентификатора.save () должен быть вызван снова.
def ensure_unique_slug(sender, instance, created, **kwargs):
if created and Person.objects.filter(slug=instance.slug).count() > 1:
instance.slug = instance.slug + '-{}'.format(instance.id)
instance.save()
делает обновление бесполезным.есть ли в любом случае обновить слаг без вызова save ()