@@ -374,20 +374,6 @@ def clan_edges(self):
374
374
"""
375
375
return self .ancestors_edges () | self .descendants_edges ()
376
376
377
- def parent_edges (self ):
378
- return edge_model .objects .filter (
379
- child__in = [
380
- self ,
381
- ],
382
- )
383
-
384
- def child_edges (self ):
385
- return edge_model .objects .filter (
386
- parent__in = [
387
- self ,
388
- ],
389
- )
390
-
391
377
@staticmethod
392
378
def circular_checker (parent , child ):
393
379
if child in parent .self_and_ancestors ():
@@ -461,15 +447,23 @@ def edge_factory(
461
447
else :
462
448
node_model_name = node_model ._meta .model_name
463
449
450
+
464
451
class Edge (base_model ):
452
+
453
+ # Get the current model's name for use in related_name
454
+ qualname = locals ()["__qualname__" ]
455
+ model_name = qualname .rsplit ('.' , 1 )[- 1 ].lower ()
456
+ if not model_name .endswith ("s" ):
457
+ model_name = model_name + "s"
458
+
465
459
parent = models .ForeignKey (
466
460
node_model ,
467
- related_name = f"{ node_model_name } _child " ,
461
+ related_name = f"children_ { model_name } " ,
468
462
on_delete = models .CASCADE ,
469
463
)
470
464
child = models .ForeignKey (
471
465
node_model ,
472
- related_name = f"{ node_model_name } _parent " ,
466
+ related_name = f"parent_ { model_name } " ,
473
467
on_delete = models .CASCADE ,
474
468
)
475
469
0 commit comments