2017-01-31 2 views
0

Я просто хочу спросить, как работает этот метод «save», в этой модели? Я просто пытаюсь добавить это в свой код, но я действительно не знаю, как это работает. Эти строки помогают мне сохранить slugify, если theres не является идентификатором в модели? Большое вам спасибо.Параметры модели Django Save

class Category(models.Model): 

    name = models.CharField(max_length=50) 
    slug = models.SlugField(editable=False) 

    def save(self, *args, **kwargs): 
     if not self.id: 
      self.slug = slugify(self.name) 
     super(Category, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.name 

ответ

1

Короткий ответ: это поможет вам добавить слизню в новый объект.

Чтобы проверить, если объект является новым выполнении этой проверки:

if not self.id: 

это возвращение Правда, только если self.id пуст. Рассмотрение id является первичным ключом, это возможно только для нового объекта.

self.slug = slugify(self.name) 

Теперь вы конвертировать name поле в слизняка с помощью slugify Util:

преобразуется в ASCII, если allow_unicode это значение False (по умолчанию). Преобразует пробелы в дефисы. Удаляет символы, которые не являются алфавитно-цифровыми, подчеркиваниями или дефисами. Преобразует в нижний регистр. Также разделяет ведущие и конечные пробелы.

Например:

slugify (значение)

Если значение равно "Джоэл слизняк", на выходе будет "Joel-это-пробковый".

И, наконец, вы звоните

super(Category, self).save(*args, **kwargs) 

, чтобы сохранить объект.

+0

Лучшее объяснение когда-либо большое спасибо @neverwalkaloner – soultaker

+0

, так что это хорошая практика для этого на моделях? @neverwalkaloner – soultaker

+0

@soultaker вы очень желанны! Да, это обычная практика. – neverwalkaloner

Смежные вопросы