【发布时间】:2011-03-28 10:53:27
【问题描述】:
我有一个设置了max_length 的字段。当我保存模型实例并且该字段的值大于max_length 时,Django 在数据库级别强制执行max_length。 (参见模型上的 Django 文档:http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.CharField.max_length)
但是,由于我使用的是 Postgres,我收到了一个 DatabaseError 异常,如下所示:
DatabaseError: value too long for type character varying(1000)
我宁愿自动截断值(所以我没有例外)。现在,我可以手动执行此操作,但我真正想要的是让我的所有模型自动截断该值。 (不一定聪明。只要在第 999 个字符处将其切断即可。)
我是否应该编写一个从 models.Model 导入的自定义类并覆盖 save() 方法,循环遍历每个 _meta.field,检查 max_length,然后截断?这似乎不优雅,必须有更好的方法。
【问题讨论】:
标签: django postgresql django-models