Автоинкремент конфликтующих слагов при сохранении - PullRequest
0 голосов
/ 05 октября 2019

Мне нужно, чтобы посты блога были уникальными для каждого пользователя. Когда пользователь сохраняет новый пост в моем проекте Django, я бы хотел, чтобы он проверил, существует ли слаг, и если он есть, добавьте -1 в конец.

Какой лучший способ сделать это? Я добавил свой код ниже, который всегда добавляет -1, и я уверен, что есть лучший способ сделать это

class Post(models.Model):
  ...

  def save(self, *args, **kwargs):
    posts = Post.objects.filter(user=self.user, slug=self.slug)
    if self not in posts:
      self.slug = self.slug + '-1'
    super(Post, self).save(*args, **kwargs)

1 Ответ

0 голосов
/ 05 октября 2019

Я нашел этот фрагмент очень полезным.

Ваше главное отличие в том, что он использует оператор while, чтобы проверить, существует ли / blog-title-1 /, и еслине пытается / blog-title-2 / etc, пока не найдет доступного слаг.

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