Почему с SlugField модель не может быть обновлена, а без Slugfield она может быть обновлена? - PullRequest
0 голосов
/ 24 февраля 2020

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

Модели (ДО УДАЛЕНИЯ)

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. Почему это происходит?

1 Ответ

0 голосов
/ 24 февраля 2020

Я решил эту проблему. В методе save () я только что удалил

if not self.slug:

И все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...