diff options
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index d41e07e97..1397d9701 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -1272,13 +1272,16 @@ def max_value_current_year(value): return MaxValueValidator(datetime.date.today().year)(value) -def create_slug(model, name, slug_attr="slug", max_length=100): +def create_slug(model, name, slug_attr="slug", max_length=100, pk=None): base_slug = slugify(name) slug = base_slug[:max_length] final_slug = None idx = 1 while not final_slug: - if slug and not model.objects.filter(**{slug_attr: slug}).exists(): + q = model.objects.filter(**{slug_attr: slug}) + if pk: + q = q.exclude(pk=pk) + if slug and not q.exists(): final_slug = slug break slug = base_slug[: (max_length - 1 - len(str(idx)))] + "-" + str(idx) |