我创建了一个Django Web应用程序,该应用程序具有模型和创建的许多模型实例。问题是我想向已经使用的模型之一添加另一个字段(有1000多个实例)。过去,我在使用Django Migrations时遇到过困难的经历,并且害怕如果我通过添加字段来修改模型,我的Web应用程序将无法运行。
如何以不影响Web应用程序功能的方式更改模型?
答案 0 :(得分:1)
以下内容可以解决您的问题,而不会引起任何问题。
如果需要,可以通过检查django admin中的字段来检查数据是否已正确填充。
但是,我建议您设置一个开发环境,以便您可以测试这种情况,而不必担心它是否会在生产环境中引起问题。
我希望这会有所帮助!
初始:
Models.py
class ExampleModel(models.Model):
name = models.CharField(blank=True, null=True)
第一次更改:
Models.py
class ExampleModel(models.Model):
name = models.CharField(blank=True, null=True)
unique_str = models.CharField(blank=True, null=True) # add this here
运行:
python manage.py makemigrations
python manage.py migrate
然后,您可以运行脚本来填充您的unique_str:
# get all model instances
example_models = ExampleModel.objects.all()
# update each unique_str as required
for e in example_models:
e.unique_str = e.pk # add any required logic here to assign value to this variable
e.save()
最后:
Models.py
class ExampleModel(models.Model):
name = models.CharField(blank=True, null=True)
unique_str = models.CharField(blank=True, null=True, unique=True) # add unique
然后再次运行:
python manage.py makemigrations
python manage.py migrate