小编典典

在Django中,您可以向查询集添加方法吗?

python

在Django中,如果我有模型类,例如

from django.db import models

class Transaction(models.Model):
    ...

然后,如果我想向模型添加方法以存储例如相当复杂的过滤器,则可以添加自定义模型管理器,例如

class TransactionManager(models.Manager):

    def reasonably_complex_filter(self):
        return self.get_query_set().filter(...)


class Transaction(models.Model):
    objects = TransactionManager()

然后我可以做:

>>> Transaction.objects.reasonably_complex_filter()

有什么方法可以添加可链接到模型的查询集末尾的自定义方法?

即以一种我可以做到的方式添加自定义方法:

>>> Transaction.objects.filter(...).reasonably_complex_filter()

阅读 195

收藏
2021-01-20

共1个答案

小编典典

您需要向QuerySet最终添加的方法添加方法。因此,您需要创建和使用一个QuerySet子类,该子类具有在需要此功能的位置定义的方法。

我找到了本教程,该教程说明了如何执行此操作以及您可能要执行以下操作的原因:

http://adam.gomaa.us/blog/2009/feb/16/subclassing-django-
querysets/index.html

2021-01-20