django model save - 在迁移期间未调用的覆盖方法

时间:2015-08-14 13:06:04

标签: python django migration

我的模型类中有一个保存覆盖方法,每次保存一个对象时都会生成一个新的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为空,因为没有调用保存覆盖。

1 个答案:

答案 0 :(得分:3)

迁移期间无法使用自定义模型方法。

相反,您可以在RunPython函数中运行put代码,以自定义save()的方式修改模型实例。

的参考文献: