Skip to content

Commit aa4031d

Browse files
Improved approach to getting parent/child edges from node instance
1 parent 1d44584 commit aa4031d

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

django_postgresql_dag/models.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -374,20 +374,6 @@ def clan_edges(self):
374374
"""
375375
return self.ancestors_edges() | self.descendants_edges()
376376

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-
391377
@staticmethod
392378
def circular_checker(parent, child):
393379
if child in parent.self_and_ancestors():
@@ -461,15 +447,23 @@ def edge_factory(
461447
else:
462448
node_model_name = node_model._meta.model_name
463449

450+
464451
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+
465459
parent = models.ForeignKey(
466460
node_model,
467-
related_name=f"{node_model_name}_child",
461+
related_name=f"children_{model_name}",
468462
on_delete=models.CASCADE,
469463
)
470464
child = models.ForeignKey(
471465
node_model,
472-
related_name=f"{node_model_name}_parent",
466+
related_name=f"parent_{model_name}",
473467
on_delete=models.CASCADE,
474468
)
475469

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from setuptools import setup
55

6-
version = '0.1.6'
6+
version = '0.1.7'
77

88
classifiers = [
99
"Development Status :: 3 - Alpha",

0 commit comments

Comments
 (0)