from django.utils.text import slugify


def unique_slug(model, value, instance_pk=None, field="slug", max_length=255, fallback="element"):
    """Slug unique pour `model` (suffixe -2, -3… comme makeUniqueSlug côté Laravel)."""
    base = (slugify(value) or fallback)[: max_length - 6]
    slug, i = base, 2
    qs = model._default_manager.all()
    if instance_pk:
        qs = qs.exclude(pk=instance_pk)
    while qs.filter(**{field: slug}).exists():
        slug = f"{base}-{i}"
        i += 1
    return slug
