Почему моя функция сохранения экземпляра модели, срабатывающая по сигналу, не сохраняет его?
Я пытаюсь разобраться в DJango, и создаю простой сайт-блог. Есть модель под названием BlogPost
:
class BlogPost(models.Model):
slug = None
title = models.CharField(max_length = 100)
content = models.TextField('Page Content')
upload_date = models.DateField(auto_now = True)
Обычно, когда есть посты в блоге, посты имеют ссылки, которые не заканчиваются на None
, но у меня такая модель, потому что я хочу, чтобы мой сайт автоматически генерировал slug на основе заголовка поста с помощью следующей сигнально-триггерной функции:
@receiver(signals.post_save,sender = BlogPost)
def set_slug(sender,instance,**kwargs):
if instance.slug:
return
instance.slug = parse.quote(instance.title)
instance.save()
При сохранении нового экземпляра модели на сайте администратора оператор if должен изменить .slug
на URL-кодированную версию заголовка поста, но когда я проверяю значение .slug
, оно всегда None
.
Почему?