Во-первых, переопределить метод save у модели. Чтоб при сохранении, создавался слаг из чего-то.
Для этого использую
https://github.com/un33k/python-slugifyclass Product(models.Model):
title = models.CharField(max_lenght=220)
slug = models.SlugField(unique=True, blank=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Product, self).save(*args, **kwargs)
А потом уже определять урлс:
url(r'/products/(?P<product>[\w-+_]+)/', 'product.views.product', name='product')
А во вьюхе уже получать продукты по полю слага. Естественно, поле лучше сделать уникальным. Я обычно просто id дописываю в конце через '_'.