具有多个类关联的树结构作为后继

时间:2014-05-27 10:03:50

标签: python django model decision-tree

我正在尝试使用多个类创建一个决策树结构,但是我不知道用Django执行此操作的最佳方法是什么。

为了说清楚,这就是我想要做的事情(左子是条件有效的情况,右子是条件无效的时候):

           (Condition A)
                |
         -------------------------------
        |                               |
    (Condition B)                 (Condition C)
        |                               |
   ------------------                   |------------
  |                 |                   |           |
(Cond D)    <Category> + <Group>     <Cat>+<Gr>    (Cond D)
  |                                                    |
  ..                                                  ...

我们的想法是将一对夫妻(<Category><Group>)或另一个<Node>与儿子相关联。问题是,“如何在Django中表示多个类字段?”

这是我的模特:

class GroupDecision(models.Model):
    name = models.CharField(max_length=100)
    # Other fields that may come later

class DecisionTree(models.Model):
    name = models.CharField(max_length=100)
    start_node = models.ForeignKey('Node')
    # Other fields that may come later

class Node(models.Model):
    name = models.CharField(max_length=100)
    predecessor = models.ForeignKey('Node', null = True, blank = True, default = None)
    successor = models.ForeignKey('SuccessorAssociation')
    operation = models.ForeignKey('Filter')

class SuccessorAssociation(models.Model):

    TARGET = (('C','Category'),('G','Group'),('N','Node'))

    condition = models.BooleanField()
    target_class = models.CharField(max_length=10,choices=TARGET)
    target_pk = models.IntegerField()

我设法使用SuccessorAssociation“{ha了”它,可以定位<Category><Group><Node>,但我不喜欢这个实现,因为它没有不保留递归删除原则而不覆盖delete()方法。

最重要的是,我正在覆盖一些由Django本身管理的机制。

自定义字段是解决此问题的一种方法,但我并不熟悉它,我认为这是一种不成比例的方法。

有人可以帮我实现吗?

谢谢

1 个答案:

答案 0 :(得分:1)