- 
                Notifications
    You must be signed in to change notification settings 
- Fork 41
Description
I'm trying to modify a project to use django-polymorphic-tree.
The project has 4 models (called A, B, C, D) all derived from a base model (called Component).  Each A instance contains a set of B items (via FK), and each of those B items contains a set of C items (via FK), each of those C items contains a set of D items.  There is another model called T, which as a FK to Component.  Each of A, B, C, D items can have a set of T items.
First, it seems the docs/examples are a little out of date (as I get errors with django 3.1.4).
TypeError: __init__() missing 1 required positional argument: 'on_delete'
I added on_delete=models.SET_NULL to the PolymorphicTreeForeignKey(...) statement in the PolymorphicMPTTModel subclass to solve this.  Is this correct?
My project was using django-polymorphic and I have changed the base class (called Component) as follows.
# class Component(PolymorphicModel):
class Component(PolymorphicMPTTModel):
    parent = PolymorphicTreeForeignKey('self', blank=True, null=True, related_name='children', verbose_name='parent', on_delete=models.SET_NULL)
    class Meta(PolymorphicMPTTModel.Meta):
        verbose_name = "Tree node"
        verbose_name_plural = "Tree nodes"Is that correct?
When I try to makemigrations I get errors about mptt fields (level, lft, ...) not having defaults.
How do I handle these?*
$ rm db.sqlite3
$ ./manage.py makemigrations
You are trying to add a non-nullable field 'level' to component without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py
NOTE:  using Django 3.1.4 with Python 3.7.3 on Debian Buster (10.7) operating system.
Thanks for any help - Brendan.