[英]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.