嵌套模型和关系之间的继承

时间:2018-09-30 10:38:01

标签: django inheritance math nested relationship

我正在试验一个智能计算器(具有一些奇怪的操作方法)。它操纵共享微积分方法的对象。这些对象是操作数和各种运算符。在这里,我只尝试一种操作员:PolarBinaryOperator(例如,可以是“ power”),但还会有很多其他操作员。

PolarBinaryOperator链接两个操作数。操作数不共享属性,仅共享计算方法之类的方法。

继承

  • 我无法将操作数设为抽象类,因为它需要由PolarBinaryOperator之类的运算符链接。
  • 我不能使所有操作数成为唯一的模型,即具有一些空值的操作数,始终保持相同,以提供操作数的真实性质。但是给定运算符的类型,链接的对象可以是其他操作数或对象。
  • 我尝试将内容类型用于一般运算符关系,但速度性能较差。
  • 我尝试了多表继承,但是它的速度性能较差。

我坚持使用内容类型解决方案吗?还是还有其他可能的模式?

class Operand(models.Model):
    def _nexts(self):
        nexts = Operand.objects.filter(
            lien_operand_origin__operand_origin=self)
        return nexts

    def calculate(self):
        pass

    def calculate2(self):
        pass


class Integer(Operand):
    value = models.models.IntegerField()


class Operator(Operand):
    # Relations
    operand_origin = models.ForeignKey(
        'Operand', related_name='destination_operand')
    operand_destination = models.ForeignKey(
        'Operand', related_name='origin_operand')


class PolarBinaryOperator(Operator):
    type_operator = models.CharField(
        choices=NATURE_CHOICES,
        max_length=2,
    )

0 个答案:

没有答案