我有一个查询,用户在数据库中的多个聚合字段上订购了if_by,如下所示:
list = MyList.objects.filter(key_item=None).extra(
select={"diff":"abs(field1+field2+field3+field4+field5+field6+field7+field8+field9+field10)"}).order_by('-diff')
我使用它是我的代码中的几个地方,我宁愿在某个集中的地方使用它。
我想知道django重用这个的最好方法。
答案 0 :(得分:4)
您可以将管理器添加到模型类中,以将其作为基础过滤器包含在内。 例如:
class MyListManager(models.Manager):
def select_diff(self):
return self.get_queryset().extra(...)
class MyList(models.Model):
objects = MyListManager()
有了这个你就可以做到:
MyList.objects.select_diff().filter(...)
您可以找到有关经理here
的更多信息将查询集写入某处的一个很大的优点是,您仍然可以使用其他过滤器/参数链接查询集,并且符合django标准