Migrando para django-mptt e Python’s MRO

O MRO do Python pode mordê-lo quando você apresenta a classe base MPTTModel para qualquer coisa que você esteja migrando, então certifique-se de que nenhuma classe base à esquerda de MPTTModel herde o próprio Model do Django. Por exemplo

from django.db import models
from mptt.models import MPTTModel

class MyMixin(models.Model):
field1
= models.IntegerField()

# Before the change
class MyModel(MyMixin, models.Model):
field2
= models.IntegerField()

# After the change
class MyModel(MPTTModel, MyMixin):
field2
= models.IntegerField()

Não fazer isso (ou seja, ter MyMixin à esquerda de MPTTModel) causará uma quebra imediata. Isso faz sentido depois que você percebe o que está acontecendo, mas demorei um pouco para encontrar o bug e decidi tentar economizar algum tempo para outras pessoas.

ATUALIZAÇÃO: Observação para migrações, há uma advertência que você deve observar ao salvar novos dados pai mencionados aqui:

  • https://coderwall.com/p/zhploq?i=1&p=1&q=author%3Aexallium&t%5B%5D=exallium