色彩时光 | 记录程序员世界的点点滴滴

django model filter keywords 除法过滤


在使用django的model filter 进行查询过滤的时候,往往需要对表中的两个列数据进行除法运算后进行的需求。这样的需求怎么解决?

自己思索的是不是新添一个数据字段,在录入的数据时候计算好保存在新添的字段中,当然这种办法可行,不过需要考虑兼容之前已有的数据,操作相对比较麻烦。

另外一种办法,在filter的时候写个方法或者重构filter对数据过滤。在动手之前查询下是不是django里面已经提供该方法,毕竟已经很成熟且这样的需求也较为普遍。

果不其然,django确实提供了此类解决的方案,具体代码如下:


class Department(models.Model):
    ##...
    num_employees = models.PositiveIntegerField()
    num_managers = models.PositiveIntegerField()

from django.db.models import F  
Department.objects.filter(num_managers__gt=F('num_employees'))

具体参考:How can I get two Python representation of the same Database table?
里面提供蛮多有价值的场景,如or and过滤操作,group_by操作等


您可能也对下面文章感兴趣:

Write a Comment


* Content (required) 10~500s

分类

热门标签

友情链接