def save(self, *args, **kwargs):
pk_field_name = self._meta.pk.name
value_field_name = getattr(self, 'value_field_name', 'channel_title')
slug_field_name = getattr(self, 'slug_field_name', 'slug')
max_interations = getattr(self, 'slug_max_iterations', 1000)
slug_separator = getattr(self, 'slug_separator', '-')
# fields, query set, other setup variables
slug_field = self._meta.get_field(slug_field_name)
slug_len = slug_field.max_length
queryset = self.__class__.objects.all()
# if the pk of the record is set, exclude it from the slug search
current_pk = getattr(self, pk_field_name)
if current_pk:
queryset = queryset.exclude(**{pk_field_name: current_pk})
slug = slugify(getattr(self, value_field_name)).replace('-', '_')
if slug_len:
slug = slug[:slug_len]
setattr(self, slug_field.attname, slug)
super(AutoSlugifyOnSaveVideoModel, self).save(*args, **kwargs)
评论列表
文章目录