[英]How to reduce max_length of CharField in Django when data already exists in db
我在Django(1.9)模型上有一个CharField:
alias = models.CharField(max_length=50)
该应用程序正在使用中,并且已经有数据,并且已经有使用所有50个字符的对象。 尝试迁移时,最简单的方法是减小此字段的max_length而不使生产数据库收到投诉吗? 如果有区别,DB是postgresql。
将max_length = 50减少到其他max_length = 20
> python manage.py makemigrations
> python manage.py migrate
您保存的所有新数据都将使用新的max_length
对于存在的数据,您可以制作简单的脚本
from myproject.models import Mymodel
for obj in Mymodel.objects.all():
obj.Firstname = obj.Firstname[0:3]
obj.save()
我认为正确的方法是直接进入python开发终端并访问该特定模型的所有对象,并将别名的值截断为:
for object in MyModel.objects.all():
object.alias = object.alias[:REDUCED_LENGTH]
object.save()
然后,在模型的CharField中更改max_length
并运行迁移。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.