Python Django ORM:模型对象的包装器

Python Django ORM:模型对象的包装器,python,django,django-models,orm,django-orm,Python,Django,Django Models,Orm,Django Orm,我正在寻找某种方法来定义在调用Model.objects.all()之前调用的包装器 我希望无论何时调用,Model.objects它调用我的方法(包装器),然后将对象返回到查询 让我们举一个例子: MyModel.objcts.filter(name="Jack") 包装器: def mymodelWrapper(self): return self.objects.annotate(size=Sum('id', field='order_size_weight*requested_

我正在寻找某种方法来定义在调用
Model.objects.all()
之前调用的包装器

我希望无论何时调用,
Model.objects
它调用我的方法(包装器),然后将对象返回到查询

让我们举一个例子:

MyModel.objcts.filter(name="Jack")
包装器:

def mymodelWrapper(self):
    return self.objects.annotate(size=Sum('id', field='order_size_weight*requested_selling_price'))
我想在后台运行annotate,还想应用过滤器。
我知道我想要实现什么,我正在寻找如何实现这一点的代码。

您所说的使用Django完全可行,方法是:

另请参见其他类似主题:


继续,我可以将
COALESCE
与select extra一起使用,这将为我提供第一个非空值。有没有办法在注释函数中使用相同的方法?@Jack我认为这可能是一个单独的问题-更多的人可以帮助你,而不是使用注释。非常感谢。
class MyModelManager(models.Manager):
    def get_query_set(self):
        return super(MyModelManager, self).get_query_set().annotate(size=Sum('id', field='order_size_weight*requested_selling_price'))


class MyModel(models.Model):
    objects = MyModelManager()

    # fields