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

发布于 2021-01-29 15:07:15

在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()
关注者
0
被浏览
62
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看