将新的默认值传播到旧的Django对象
我刚刚在Django站点中的一个模型的一个字段中添加了一个默认值。在设置默认值之前存在的所有此类对象的此字段值都为空。我希望刚刚设置的新默认值能够向后传播到设置默认值之前已经存在的所有对象上。我怎样才能做到这一点呢?您需要使用。这很简单,只需按照他们文档的教程操作即可。如果从字段中删除将新的默认值传播到旧的Django对象,django,model,default,django-south,database-migration,Django,Model,Default,Django South,Database Migration,我刚刚在Django站点中的一个模型的一个字段中添加了一个默认值。在设置默认值之前存在的所有此类对象的此字段值都为空。我希望刚刚设置的新默认值能够向后传播到设置默认值之前已经存在的所有对象上。我怎样才能做到这一点呢?您需要使用。这很简单,只需按照他们文档的教程操作即可。如果从字段中删除null=True,blank=True,它将询问您希望null/blank字段是什么,您可以输入默认值 您需要使用。这很简单,只需按照他们文档的教程操作即可。如果从字段中删除null=True,blank=Tru
null=True,blank=True
,它将询问您希望null/blank字段是什么,您可以输入默认值 您需要使用。这很简单,只需按照他们文档的教程操作即可。如果从字段中删除null=True,blank=True
,它将询问您希望null/blank字段是什么,您可以输入默认值 只需运行更新查询:
MyModel.objects.filter(myfield__isnull=True).update(myfield=new_value)
只需运行更新查询:
MyModel.objects.filter(myfield__isnull=True).update(myfield=new_value)
我删除了
null=True,blank=True
并运行python manage.py schemamigration main--auto
,然后运行python manage.py migrate main
。它产生以下错误:django.db.utils.IntegrityError:_south_new_main_network.panel_image_file_id不能为NULL
而不是询问我的NULL/blank字段。请告知。我删除了null=True,blank=True
并运行了python manage.py schemamigration main--auto
,然后运行了python manage.py migrate main
。它产生以下错误:django.db.utils.IntegrityError:_south_new_main_network.panel_image_file_id不能为NULL
而不是询问我的NULL/blank字段。请告知。我用一行非常相似的代码解决了我的问题:orm['main.mymodel'].objects.filter(myfield\uu isnull=True)。update(myfield=0)
。我把这一行放在我的一个迁移脚本的forwards方法中。我用一行非常相似的代码解决了我的问题:orm['main.mymodel'].objects.filter(myfield\uu isnull=True)。update(myfield=0)
。我把这行代码放在了我的一个迁移脚本的forwards方法中!感谢所有的丹尼尔·罗斯在那里!