2011-06-12 215 views
0
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:使用抽象父模型中子模型的管理器

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

回答

1

代理模式是为了增加额外的方法或的funcionality模型,而不与场/ DB搞乱......但只要你想继承这个方法在一个以上的模式,代理模式被连接到一个非抽象类,xpos + ypos也被继承,我猜抽象类可能是做这项工作的最佳选择。