如何将django-mptt rebuild添加到迁移?

时间:2018-03-07 20:26:05

标签: django-migrations django-mptt

我已将django-mptt添加到现有数据库,并创建新的迁移。

要求迁移过程提供levelleftright和此类字段的默认值,但不会将model.rebuild操作添加到迁移文件中。

如何手动将重建操作添加到迁移文件中?

1 个答案:

答案 0 :(得分:2)

尝试以下操作:

from __future__ import unicode_literals
from django.db import migrations
from mptt import register, managers


def rebuild_tree(apps, schema_editor):
    YourMPTTModel = apps.get_model('your_app', 'YourMPTTModel')

    manager = managers.TreeManager()
    manager.model = YourMPTTModel

    register(YourMPTTModel)

    manager.contribute_to_class(YourMPTTModel, 'objects')
    manager.rebuild()


class Migration(migrations.Migration):


  operations = [
      migrations.RunPython(
          rebuild_tree
      )
  ]