2012-01-27 59 views
0

访问类方法,我有以下设置: 类面包(models.Model): #字段Django的:模型通过RelatedManager

class Pizza(models.Model): 
    # fields 

class Topping(models.Model): 
    # fields 

    @classmethod 
    def do_something(cls): 
     # stuff 

    class Meta: 
     abstract = True 

class PizzaTopping(models.Model): 
    obj = models.ForeignKey(Pizza, related_name='topping_set') 

class BaguetteTopping(models.Model): 
    obj = models.ForeignKey(Baguette, related_name='topping_set') 

我知道,关系所作的方式是不完美的,但现在就是这样。

我的问题是:我可以通过RelatedManager以动态方式访问do_something,但不知道它背后是否有PizzaToppingBaguetteTopping

我的PizzaBaguette实例obj(在这一点上,我不知道这是否是PizzaBaguette)。现在,我想打电话给这样的事情:

obj.topping_set.__modelclass__.do_something() 

有没有办法做到这一点没有测试的类obj

回答

2

obj.topping_set.model将是你的模型类。所以obj.topping_set.model.do_something()