слишком длинное значение для изменяемого символа (N) - PullRequest
4 голосов
/ 13 октября 2011

У моей модели есть SlugField. Когда я пытаюсь сохранить экземпляр этой модели с полем slug, для которого задана строка, длина которой превышает параметр max_length поля (по умолчанию 50), я получаю следующую ошибку от Postgresql: value too long for type character varying(50).

Разве Django (или Postgresql) не должен обрезать строку при сохранении? Что я могу сделать, чтобы исправить это, кроме обрезания каждый раз вручную?

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Либо установите юг и измените размер столбца (лучший вариант), либо создайте сигнал pre_save и добавьте код для усечения поля до 50 символов перед его сохранением.Что-то вроде:

from django.db.models.signals import pre_save
from app.model import mymodel

def truncater(sender, instance, **kwargs):
    if sender is mymodel:
        if len(instance.fieldname)>50:
            instance.fieldname = instance.fieldname[:50]
pre_save.connect(truncater, sender=mymodel)
0 голосов
/ 13 мая 2014

Вы можете просто добавить что-то в ваше представление, которое проверяет, будет ли слаг иметь> 50 символов, и если это так, усекает его.

if len(content) >50:
    content = content[:50]
else:
    pass
slug = content
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...