Вы можете обновить экземпляр модели без вызова save ()? - PullRequest
0 голосов
/ 13 декабря 2018

Я работаю над проектом, который требует уникальных слагов.Слагы динамически создаются в пользовательском методе 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 ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...