如何從其他模組添加新方法到Django類別?

2024-04-26 05:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django模型说:

class MyOperation(models.Model):
    name = models.CharField(max_length=100)

    def my_method(self):
        pass

我希望能够从不同的Django应用程序向这个类添加一个新方法。在

我试着从另一个名为自定义.py公司名称:

^{pr2}$

但是这似乎不起作用,在运行时该方法不存在。在

这是从不同的django应用程序修改类定义的方法吗?有更好的方法吗?在

谢谢


Tags: django方法name模型selfmodelmodelsmy
1条回答
网友
1楼 · 发布于 2024-04-26 05:32:36

正确的方法™ 要做到这一点,需要通过mixin:

class MyMixIn(object):
    def op_custom(self):
        print("foo")

class MyOperation(models.Model, MyMixIn):
    def op_normal(self):
        print("bar")

与其他方法相比,这种方法有几个优点:

  • mixin在类method resolution order中,因此内省工作得非常完美。在
  • 由于类本身继承自mixin,因此无论在何处实例化,都保证在类的每个实例上定义它。否则,在没有这个方法的地方,您可能会在应用monkey补丁之前得到实例。在
  • 它为将来添加此类方法提供了一个明显的位置。在

相关问题 更多 >

    热门问题