2012-01-27 85 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()