2011-06-12 253 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也被繼承,我猜抽象類可能是做這項工作的最佳選擇。