我已将django-mptt添加到现有数据库,并创建新的迁移。
要求迁移过程提供level
,left
,right
和此类字段的默认值,但不会将model.rebuild
操作添加到迁移文件中。
如何手动将重建操作添加到迁移文件中?
答案 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
)
]