在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子类,该子类具有在需要此功能的位置定义的方法。
QuerySet
我找到了本教程,该教程说明了如何执行此操作以及您可能要执行以下操作的原因:
http://adam.gomaa.us/blog/2009/feb/16/subclassing-django- querysets/index.html