Django:使用抽象父模型中的子模型管理器

时间:2011-06-12 19:17:28

标签: python django

class PositionModel(models.Model):
    xpos = models.IntegerField()
    ypos = models.IntegerField()
    def relative(self, x, y):
        self.__class__.objects.filter(xpos = self.xpos + x,
                                      ypos = self.ypos + y)
    class Meta:
        abstract = True

此示例允许您在几个不同的模型中继承PositionModel,然后使用relative(x,y)函数根据子模型执行查询。

Django是否有其他一些首选的方法在使用孩子经理的抽象模型中编写函数?

1 个答案:

答案 0 :(得分:1)

代理模型旨在为模型添加额外的方法或功能,而不会弄乱字段/ db ...但是因为您希望在多个模型上继承此方法,并且代理模型连接到一个非-abstract类,xpos + ypos也被继承,我猜一个抽象类可能是做这项工作的最佳选择。