Caio Ariede avatar Caio Ariede committed 8cdb0a8

Allows blank/null slugs

Comments (0)

Files changed (1)

autoslug/fields.py

 
         slug = self.slugify(value)
 
-        if not slug:
+        if not slug and not self.blank:
             # no incoming value,  use model name
             slug = instance._meta.module_name
 
-        assert slug, 'slug is defined before trying to ensure uniqueness'
+        if not self.blank:
+            assert slug, 'slug is defined before trying to ensure uniqueness'
 
-        slug = utils.crop_slug(self, slug)
+        if slug:
+            slug = utils.crop_slug(self, slug)
 
-        # ensure the slug is unique (if required)
-        if self.unique or self.unique_with:
-            slug = utils.generate_unique_slug(self, instance, slug, manager)
+            # ensure the slug is unique (if required)
+            if self.unique or self.unique_with:
+                slug = utils.generate_unique_slug(self, instance, slug, manager)
 
-        assert slug, 'value is filled before saving'
+            assert slug, 'value is filled before saving'
+
+        elif self.null:
+            # If the field is nullable
+            slug = None
 
         # make the updated slug available as instance attribute
         setattr(instance, self.name, slug)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.