如何从应用了 contribute_to_class 的 class 访问 Django 模型实例

How to access django model instance from class applied with contribute_to_class

我正在使用 contribute_to_class 向模型添加跟踪器 class。

F.e。

class Tracker(object):
    watched_class = None

    def contribute_to_class(self, cls, name=None):
         self.watched_class = cls

class Post(models.model):
    ...
    tracker = Tracker()

所以我可以通过 Post.tracker 访问跟踪器。但是在某些操作中,访问模型实例会很好,所以我可以使用 post_instance.do_some_stuff().

而不是 Post.tracker.do_some_stuff(post_instance)

可能吗?

是的,有可能:

class Tracker(object):

    def contribute_to_class(self, cls, name=None):

        def do_some_stuff(instance):
            print instance

        cls.do_some_stuff = do_some_stuff