Задать вопрос
MalikDeveloper2077
@MalikDeveloper2077

Django. Почему без slug модель изменяется а со slugfield нет?

В общем не изменялись данные, решил убрать slug в модели и все заработало. До этого я когда изменял что то через админку да и вообще через любое средство ничего не менялось, но почему то когда я убрал slugfield, любое поле изменяется. Почему так происходит?

Models (БЫЛО)

from .for_slug import slugify as my_slugify

class Quiz(models.Model):
    """Quiz model"""
    slug = models.SlugField('Url-адрес', max_length=50, blank=True)
    .....
    
    def save(self, *args, **kwargs):
        """Use the custom slugfiy (for_slug.py)"""
        if not self.slug:
            slug = my_slugify(self.title)
            exists = Quiz.objects.filter(slug=slug).exists()
    
            if exists:
                slug += f'-{str(int(time()))}'
    
            self.slug = slug
            super().save(*args, **kwargs)


for_slug.py
from django.template.defaultfilters import slugify as django_slugify

alphabet = {
    'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e',
    'ё': 'yo', 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k',
    'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r',
    'с': 's', 'т': 't', 'у': 'u', 'ф': 'f', 'х': 'kh', 'ц': 'ts',
    'ч': 'ch', 'ш': 'sh', 'щ': 'shch', 'ы': 'i', 'э': 'e', 'ю': 'yu',
    'я': 'ya'
}


def slugify(s):
    return django_slugify(''.join(alphabet.get(w, w) for w in s.lower()))


Из-за чего это может происходить, если что пользуюсь postgresql
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
MalikDeveloper2077
@MalikDeveloper2077 Автор вопроса
Вопрос решен, все из-за того что в методе save я прописал if not self.slug, надо было просто убрать данное условие.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽