类型字符变化的值太长(N)

时间:2011-10-12 23:52:55

标签: django postgresql

我的模型有一个SlugField。当我尝试将slug字段设置为比字段的max_length参数(默认为50)更长的字符串时保存此模型的实例时,我从Postgresql中收到以下错误:{{1} }。

Django(或Postgresql)是不是应该在保存时截断字符串?除了每次手动截断它之外,我还能做些什么来解决它?

2 个答案:

答案 0 :(得分:3)

安装south并调整列的大小(最佳选项),或创建pre_save signal并添加代码以在保存之前将字段截断为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)

答案 1 :(得分:0)

您可以在视图中添加一些测试以查看slug是否> 50个字符的内容,如果是,则截断它。

if len(content) >50:
    content = content[:50]
else:
    pass
slug = content