@sportredwhite

Как сделать ЧПУ на django?

Можете подсказать почему не работает, плз.
Первый метод нужен для того, чтобы если заголовки одинаковые, то добавляется id.
Второй переводит на английский title.

Если делать всё по отдельности то заработает.

def create_slug(instance, new_slug=None):
    slug = instance.title
    if new_slug is not None:
        slug = new_slug
    qs = Post.objects.filter(slug=slug).order_by("-id")
    exists = qs.exists()
    if exists:
        new_slug = "%s-%s" %(slug, qs.first().id)
        return create_slug(instance, new_slug=new_slug)
    return slug


def set_post_slug(sender, instance, *args, **kwargs):
    from pytils import translit
    instance.slug = translit.slugify(create_slug(instance))

pre_save.connect(set_post_slug, sender=Post)
  • Вопрос задан
  • 1172 просмотра
Решения вопроса 1
def handle_post_slug(sender, instance, *args, **kwargs):
	from pyutils import translit
	slug = translit(instance.title)
	if Post.objects.filter(slug=slug).exclude(id=instance.id).exists():
		slug = "-".join([slug, str(instance.id)])
	instance.slug = slug

pre_save.connect(handle_post_slug, sender=Post)

Навскидку. Расскажите подробнее, что "не работает"?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы