У меня уже есть модель в моем проекте, которую я сейчас хочу использовать с django-mptt.Эта модель уже содержит некоторые данные.
Во время миграции вам предлагается установить значения по умолчанию для некоторых полей, которые создает django-mptt.Как указано в документации, я установил 0 как значение по умолчанию.Документация продолжается и рекомендует запускать Model.objects.rebuild()
после этого, чтобы установить правильные значения в полях.Я хотел бы выполнить эту операцию через мои файлы миграции.Я НЕ хочу запускать это через мою django-оболочку, так как это не разовая операция.
Мои файлы миграции таковы:
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2018-12-27 17:33
from __future__ import unicode_literals
from django.db import migrations, models
def migrate_mptt(apps, schema_editor):
ProductCategory = apps.get_model("product", "ProductCategory")
ProductCategory.objects.rebuild()
class Migration(migrations.Migration):
dependencies = [
('product', '0016_auto_20181227_2303'),
]
operations = [
migrations.RunPython(migrate_mptt),
]
При миграции я получаю ошибку AttributeError: 'Manager' object has no attribute 'rebuild'
.Конечно, эта же команда отлично работает в оболочке.
Мне нужно сделать это с помощью миграций, поскольку я хочу, чтобы эта операция запускалась автоматически при каждом развертывании моего проекта.