If the node has many-to-many field, then this can not be assigned until the node is saved first. Django forms always defer relational fields until post save()
Treebeard creates nodes with * *kwargs, assigning many-to-many values directly in the constructor. Standard django model fails here. Yes, it is not the problem of treebeard, but rather how django handles relational fields (consistency).
Current solution is to override init and save_base and defer all many-to-many fields until object is saved. This requires extra code.
Better fix: instead of node(* *kwargs) iterate over Model._meta.many_to_many, pop all these fields from kwargs. Then instance.save() and then assign all popped field values.