在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
问题内容: 我想通过使用Postgresql的“ NULLS LAST”选项对模型进行排序。怎么做? 我尝试了类似的东西 但是我明白了 “无法将关键字’NULLS LAST’解析为字段” 问题答案: 此功能已添加到Django 1.11中。 https://docs.djangoproject.com/en/dev/releases/1.11/
问题内容: 有没有一种方法可以为查询对象创建自定义方法,以便您可以执行以下操作? 本质上在哪里 并能够过滤掉它吗? 问题答案: 您可以对基类进行子类化以添加自己的方法: 然后,您可以在创建会话时告诉SQLAlchemy使用此新查询类(此处的文档)。从您的代码看来,您可能正在使用Flask- SQLAlchemy,因此您可以按照以下步骤进行操作: 否则,您将参数直接传递给: 到目前为止,这个新的查询
问题内容: 你可以添加新的语句(例如,,)Python的语法? 说,允许 要么, 如果您 应该的话 ,不要太多,但如果可能的话,就可以了(只需修改python解释器代码即可) 问题答案: 您可能会发现这很有用-Python内部:在Python上添加新语句,引用如下: 本文旨在更好地了解Python前端的工作方式。仅仅阅读文档和源代码可能会有点无聊,因此我在这里采用动手实践的方法:我将向Python
问题内容: 我有点困惑如何使用在Django的。例如,一个对象Blog ,以及与该对象相关的attribute entry_set。是什么意思? 如果有人可以使用此示例显示可能的输出,我将不胜感激。 问题答案: 你看到的是反向相关的对象查找。 在你的示例中: 现在,给定类型为的对象,你将可以访问相关对象-这是一个正向关系。该是一个反向查找类变量的Django为你看跌期权。 因此,给定对象-你将执行
问题内容: 我正在努力实现以下目标: 我有一个ORDER BY语句,该语句可能会根据列A中存储的值而有所不同。 例如: 如果类型是成员,则按成员姓氏排序;如果类型是组,则按组名字排序 两者均以升序排列。 我对最终声明的最佳猜测是: 我知道这是错误的,但无法在其他地方找到信息。有任何想法吗? 问题答案: 好了,您可以在MySQL中使用该 函数 (请注意,因为还有一个不相关的语句,所以要重点说明)…:
问题内容: 我们有一个测试套件,主要使用带有Hamcrest匹配器的JUnit断言。我们的一个团队开始对AssertJ进行实验,并以其语法,灵活性和声明性给人留下了深刻的印象。JUnit提供的一项功能是我无法在AssertJ中找到与之等效的功能:添加自定义断言失败消息。 我们经常在比较不是为了人类可读性而制成的对象,这些对象将具有随机查找的Id或UUID,并且无法通过包含的数据来判断它们应该是什么