4

I have add the django-mptt to existing database, and create the new migration.

Migration process was asked for default values for level, left, right and such fields, but doesn't add the model.rebuild operation to migration file.

How to add rebuild operation to migration file manually?

Y.N
  • 4,989
  • 7
  • 34
  • 61

1 Answers1

9

Try the following:

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
      )
  ]