我在Django(1.9)模型上有一个CharField:
<user-mapping>
<authorize
username="test"
password="testtest">
<connection name="Windows 10">
<protocol>rdp</protocol>
<param name="hostname">x.x.x.x</param> //my desktops ip address (From google)
<param name="port">3389</param>
</connection>
</authorize>
</user-mapping>
该应用正在使用且已有数据,并且已有使用所有50个字符的对象。当我尝试迁移时,在没有收到生产数据库投诉的情况下减少此字段的max_length的最简单方法是什么?如果它有所不同,DB就是postgresql。
答案 0 :(得分:0)
将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()
答案 1 :(得分:0)
我认为正确的方法是简单地去开发python终端并访问该特定模型的所有对象并截断别名的值:
for object in MyModel.objects.all():
object.alias = object.alias[:REDUCED_LENGTH]
object.save()
并且,更改模型中CharField中的max_length
并运行迁移。