есть простая модель:
class ModelZavet(models.Model):
mz_name = models.CharField('Название для сайта', max_length=200)
mz_slug = models.SlugField('URL', max_length=70, db_index=True)
mz_num = models.PositiveSmallIntegerField('Порядок', default=1)
mz_descriptions = models.TextField('Описание', blank=True)
в admin.py соответственно прописано:
prepopulated_fields = {'mz_slug': ('mz_name',)}
всё отлично работает, slug автоматически создаётся. Без нареканий.
Но тут возникает мысль, что надо бы уметь создавать записи в бд не только через админку, но и через shell. В связи с этим возникает вопрос - а как тогда будет создаваться slug? ведь он должен создаваться автоматически
в модель добавляется такой код:
def save(self, *args, **kwargs):
if not self.id:
self.mz_slug = slugify(self.mz_name)
super(ModelZavet, self).save(*args, **kwargs)
и всё работает. Создаю новую запись через shell, slug при это не задаю, далее вызываю метод save и вижу что в бд есть новая запись и там автоматически созданный slug.
Но, если поле mz_name, с которого создаётся slug написано по русски, то slug не создаётся. Соответственно всё крашится т.к запись становиться не уникальной и прочий ворох проблем. Почему такое только с русским наименованием, что мне исправить?