我的模型类中有一个保存覆盖方法,每次保存对象时都会生成一个新的 slug。
def save(self, *args, **kwargs):
if self.column2:
self.slug = slugify(self.column1 + " " + self.column2)
else:
self.slug = slugify(self.column1)
print slug
super(MyModel, self).save(*args, **kwargs)
当我尝试通过登录 python shell 创建新对象时,我看到 save 方法正在被调用。
python manage.py shell
>>> MyModel(column1="test",column2="2015").save()
slug is test-2015
但是,当我运行迁移时,不会调用此保存覆盖方法。这是我的迁移脚本的一部分..
...
def add_myModel_details(apps, schema_editor):
x = apps.get_model("myapp","myModel")
MyModel(column1 = "test", column2="2015" ).save()
.....
slug 为空,因为未调用保存覆盖。
自定义模型方法在迁移期间不可用。
相反,您可以在您的RunPython
以自定义方式修改模型实例的函数save()
将有。
参考:
- 这个答案 https://stackoverflow.com/a/37685925/247696
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)