我的模型有一个SlugField。当我尝试将slug字段设置为比字段的max_length
参数(默认为50)更长的字符串时保存此模型的实例时,我从Postgresql中收到以下错误:{{1} }。
Django(或Postgresql)是不是应该在保存时截断字符串?除了每次手动截断它之外,我还能做些什么来解决它?
答案 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