2012-01-27 2 views
0

を介したモデルのアクセス・クラスメソッド私は、次の設定があります。 クラスバゲット(models.Model): #フィールドジャンゴ: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') 

私が知っている、関係が作られている方法は、完璧ではありませんしかし、これは今のところそれです。

私の質問は:do_somethingには、PizzaToppingまたはBaguetteToppingの背後にあるかどうかを知らずに、RelatedManager経由で動的にアクセスできますか?

は私がPizzaまたはBaguetteのインスタンスobjを持っている(それはPizzaBaguetteであれば、この時点で私は知りません)。今私はこのような何かを呼びたい:

obj.topping_set.__modelclass__.do_something() 

objのクラスをテストせずにこれを行う方法はありますか?

答えて

2

obj.topping_set.modelがあなたのモデルクラスになります。だからobj.topping_set.model.do_something()