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
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
MalikDeveloper2077
@MalikDeveloper2077 Автор вопроса
Вопрос решен, все из-за того что в методе save я прописал if not self.slug, надо было просто убрать данное условие.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы