Можно ли использовать исключение catch для сигнала pre_save?
У меня есть простой хук жизненного цикла "перед созданием" / сигнал джанго.
class Item(models.Model):
title = CharField()
slug = CharField(unique=True)
@hook(BEFORE_CREATE):
def populate_slug(self):
slug = slugify(self.title)
n = 1
while Item.objects.filter(slug=(f"${slug}-${n}")).exists():
n += 1
self.slug = f"${slug}-${n}"
Можно ли сохранить этот дополнительный запрос .exists()
и как-то использовать ошибку исключения IntegrityError (поскольку в slug
есть unique=True
) для обновления slug?
Что-то вроде:
@hook(BEFORE_CREATE):
def populate_slug(self):
for i in range(0,100):
slug = slugify(self).title
n = 1
while True:
try:
self.slug = f"${slug}-${n}"
# This defeats the purpose of using
# a "before create" signal though
self.save()
except:
n += 1
continue
break