I need to store a tree data structure in my database, for which I plan on using django-treebeard or possibly django-mptt. My source of confusion is that each node could be one of three different possible types: root nodes will always be a type A entity, leaf nodes a type C entity, and anything in between will be a type B entity. I would like to know the best way to model this situation.
update: I first tried model inheritance, and I think that this could be the best way to go. Unfortunately django-treebeard’s public API isn’t really designed to handle this. I ended up getting it to work with GenericForeignKey. Thank you very much for the answers.
How about using a generic relation from the model which will hold the tree structure to the content object for the node it represents?
This could potentially result in a lot of queries when retrieving content objects for the full tree, but there are ways and means of reducing the number of queries required.