#!/usr/bin/python
from django.db import models, IntegrityError
import re
from django.template.defaultfilters import slugify
class MyModel(models.Model):
title= models.CharField(max_length=50)
slug = models.SlugField(blank = True, unique=True)
def save(self):
# auto fill the slug field
if not self.slug:
self.slug = slugify(self.title)
while True:
try:
super(MyModel, self).save()
except IntegrityError:
matches = re.match(r'^(.*)-(\d+)$', self.slug)
if match_obj:
current = int(matches .group(2)) + 1
self.slug = matches .group(1) + '-' + str(current)
else:
self.slug += '-2'
else:
break