Advertisement
Guest User

Untitled

a guest
Nov 9th, 2016
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. class City(models.Model):
  2.     name = models.CharField(max_length=200, unique=True, verbose_name='Название')
  3.     slug = models.SlugField(max_length=220, verbose_name='Slug', blank=True)
  4.  
  5.     def __str__(self):
  6.         return self.name
  7.  
  8.     def make_slug(self, instance_before):
  9.         if not instance_before:
  10.             self.slug = create_slug(self.name)
  11.  
  12.     def save(self, *args, **kwargs):
  13.         instance_before = City.objects.get(pk=self.pk) if self.id else None
  14.  
  15.         self.make_slug(instance_before)
  16.  
  17.         super().save(*args, **kwargs)
  18.  
  19. def create_slug(val):
  20.     return slugify(unidecode(val))
  21.  
  22.  
  23. def unique_slug(model, slug, instance=None):
  24.     orig = slug
  25.     for x in itertools.count(1):
  26.         if instance:
  27.             if not model.objects.filter(slug=slug).exclude(pk=instance.pk).exists():
  28.                 break
  29.         else:
  30.             if not model.objects.filter(slug=slug).exists():
  31.                 break
  32.         slug = '%s-%d' % (orig, x)
  33.     return slug
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement