首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对字段的一部分执行Django查询

对字段的一部分执行Django查询
EN

Stack Overflow用户
提问于 2014-03-11 09:33:58
回答 2查看 59关注 0票数 0

由于历史原因,我有一个保存版本号的模型,比如x.y.z

代码语言:javascript
复制
class Product(models.Model):
    version = TextField()

我想在数据库上执行请求,例如,获取所有主版本号高于5的产品,或者获取所有版本低于6的产品。

我对SQL能力不太熟悉。我能用Django querysets来表达这样的事情吗?或者使用普通的SQL,如果Django本机不支持它呢?

类似于:

代码语言:javascript
复制
Product.objects.filter(version__some_expression_gt=5)

这有可能吗?

我知道显而易见的解决方案是将version字段分割成它的数值对应项,但遗憾的是,出于愚蠢的原因,这不是我的选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-11 09:39:24

https://docs.djangoproject.com/en/dev/ref/models/querysets/#regex

代码语言:javascript
复制
Product.objects.filter(version__regex=r'^[5-9]\.')

只是一个“一半”的解决方案,但我想玩regex是一个好的开始。

票数 1
EN

Stack Overflow用户

发布于 2014-03-11 09:45:45

您可以使用用于复杂查询的q

代码语言:javascript
复制
from django.db.models import Q

q_gt5 = Q( version__some_expression_gte="5" )
q_lt6 = Q( version__some_expression_lte="6" )

results_or    = Product.objects.filter(q_gt5 | q_lt6 )
results_and   = Product.objects.filter(q_gt5 & q_lt6 )
results_other = Product.objects.filter( ~q_gt5 & q_lt6 )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22321606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档