我有以下设置: class Baguette(models.Model): #fields
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
,而不知道其背后是否有PizzaTopping
或BaguetteTopping
?
我有obj
或Pizza
的实例Baguette
(此时我不知道它是Pizza
还是Baguette
)。现在我想打电话给这样的话:
obj.topping_set.__modelclass__.do_something()
有没有办法在不测试obj
类的情况下执行此操作?
答案 0 :(得分:2)
obj.topping_set.model
将是您的模型类。所以obj.topping_set.model.do_something()
。