it looks like what i want to do. did you set the slug field as
blank=True or null=True?

adamalton wrote:
> Here's some code that I wrote a few days ago:
>
> class MyModel(models.Model):
>     #various fields and stuff here
>
>     def save(self, *args, **kwargs):
>         if not self.slug:
>             self.slug = self.make_slug()
>         super(Project, self).save(*args, **kwargs)
>
>     def make_slug(self):
>         """ Create a (unique) slug from self.name. """
>         sanitized = re.sub("(?i)[^a-z0-9_-]", "_", self.name).lower()
> #remove non-alpha-numeric-underscore-hyphen chars
>         sanitized = re.sub("^_|_$", "", sanitized) #remove underscores
> from start/end cos they look dumb
>         while(re.search("__", sanitized)): #remove double underscores
> cos they look dumb
>             sanitized = re.sub("__", "_", sanitized)
>         #now make sure that it's unique:
>         while(Project.objects.filter(slug__iexact=sanitized).count()):
> #if it's not unique
>             current_number_suffix_match = re.search("\d+$", sanitized)
> #get the current number suffix if there is one
>             current_number_suffix = current_number_suffix_match and
> current_number_suffix_match.group() or 0
>             next = str(int(current_number_suffix) +1) #increment it,
> and turn back to string so re.sub doesn't die
>             sanitized = re.sub("(\d+)?$", next, sanitized) #replace
> current number suffix with incremented suffix, try again...
>         return sanitized
>
> That should do exactly what you're after.
> Adam Alton
>
>   

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to