У меня проблема с созданием уникальных слизней с использованием моделей django. Я хочу, чтобы администратор мог изменить slug с страницы редактирования в admin. Когда slug уже существует, должно быть «slug + _1», «slug + _2» и т. Д. Также, когда создается новая страница и нет пули, если slug должен быть заголовком страницы. У меня есть этот код, но по какой-то причине администратор продолжает говорить: «Страница с этим Slug уже существует». когда я добавляю страницу с уже запущенным слизью. Надеюсь, кто-нибудь может мне помочьсоздать уникальный slug django
def save(self, *args, **kwargs):
if not self.id and not self.slug:
self.slug = slugify(self.page_title)
else:
self.slug = slugify(self.slug)
slug_exists = True
counter = 1
slug = self.slug
while slug_exists:
try:
slug_exits = Page.objects.get(slug=slug)
if slug_exits == slug:
slug = self.slug + '_' + str(counter)
counter += 1
except:
self.slug = slug
break
super(Page, self).save(*args, **kwargs)
Вы хотите написать 'self.slug = self.slug + '_' + str (counter)' вместо 'slug = self.slug + '_' + str (counter)'? – xnx
Нет перезаписывания var 'slug', чтобы он мог искать page_1 или page_2 и т. Д. Когда он не найден, исключение должно давать' self.slug' пулю. –
Это не точный ответ на ваш вопрос, но, возможно, стоит обратить внимание: https://pypi.python.org/pypi/django-autoslug –