问题
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?
回答1:
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
)
]
来源:https://stackoverflow.com/questions/49160623/how-to-add-django-mptt-rebuild-to-migration