在Django中,您可以向查询集添加方法吗?
在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()
-
您需要向
QuerySet
最终添加的方法添加方法。因此,您需要创建和使用一个QuerySet
子类,该子类具有在需要此功能的位置定义的方法。我找到了本教程,该教程说明了如何执行此操作以及您可能要执行以下操作的原因:
http://adam.gomaa.us/blog/2009/feb/16/subclassing-django-
querysets/index.html