簡體   English   中英

當數據庫中已經存在數據時如何減少Django中CharField的max_length

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM