Index: django/contrib/admin/media/js/urlify.js
===================================================================
--- django/contrib/admin/media/js/urlify.js	(revision 2900)
+++ django/contrib/admin/media/js/urlify.js	(working copy)
@@ -10,6 +10,7 @@
     s = s.replace(/[^-A-Z0-9\s]/gi, '');  // remove unneeded chars
     s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
     s = s.replace(/\s+/g, '-');      // convert spaces to hyphens
+    s = s.replace(/-+/g, '-');      // collapse repeated hyphens
     s = s.toLowerCase();             // convert to lowercase
     return s.substring(0, num_chars);// trim to first num_chars chars
 }
\ No newline at end of file
Index: django/template/defaultfilters.py
===================================================================
--- django/template/defaultfilters.py	(revision 2900)
+++ django/template/defaultfilters.py	(working copy)
@@ -66,7 +66,8 @@
 def slugify(value):
     "Converts to lowercase, removes non-alpha chars and converts spaces to hyphens"
     value = re.sub('[^\w\s-]', '', value).strip().lower()
-    return re.sub('\s+', '-', value)
+    value = re.sub('\s+', '-', value)
+    return re.sub('-+', '-', value)
 
 def stringformat(value, arg):
     """
