Django ORM:模型对象的包装器

时间:2014-09-02 13:37:30

标签: 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_selling_price'))

我想在后台运行注释,并且还想应用过滤器。 我知道我想要实现什么,我正在寻找如何做到的代码。

1 个答案:

答案 0 :(得分:1)

使用custom model manager

,Django完全可以解决您的问题
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

另见其他类似主题: