小编Tom*_*Rup的帖子

使用filter()和Q对象混合的Django ORM查询

我正在寻找创建一个稍微复杂的查询,使用原始SQL很容易编写.以下是raw中查询的示例:

SELECT my,fields FROM sales WHERE is_paid = False OR status ='toship'AND otherfield ='FOO'AND another ='BAR'

这很简单,它生成所有结果为is_paid = False,然后为我的AND匹配生成第二个结果集.

现在我知道了Q对象,我知道有关过滤但是我似乎无法完全理解如何在Django ORM中实现这一目标.

有小费吗?

谢谢

django orm django-q

4
推荐指数
2
解决办法
8704
查看次数

从django Q查询弹出查询?

我正在使用看起来像这样的查询:

    filters = Q(is_default = False)
    # Build the excludes and filters dynamically 
    if cut:
        filters = filters & Q(mailbagstats__num_letters2__gt = int(cut) )
Run Code Online (Sandbox Code Playgroud)

鉴于filters Q查询,我可以查询pop其中一个吗?

我想Q(mailbagstats__num_letters2__gt= int(cut) )从此Q查询中删除查询,以获取新的过滤器.

通常情况下,我使用列表,reduce但这个是通过构造, Q() & Q()所以我不知道如何修改它.

感谢您提供的任何输入!

python django django-q

4
推荐指数
1
解决办法
187
查看次数

使用Django中的Q()动态构建复杂查询

第一个例子:

# ANDing Q objects
q_object = Q()
q_object.add(Q(), Q.AND)

# ORing Q objects
q_object = Q()
q_object.add(Q(), Q.OR)
Run Code Online (Sandbox Code Playgroud)

第二个例子:

>>> import operator
# create a list of Q objects
>>> mylist = [Q(question__contains='dinner'), Q(question__contains='meal')]
# OR
>>> Poll.objects.filter(reduce(operator.or_, mylist))
[<Poll: what shall I make for dinner>, <Poll: what is your favourite meal?>]
# AND
>>> Poll.objects.filter(reduce(operator.and_, mylist))
[]
Run Code Online (Sandbox Code Playgroud)

这种技术可能非常有用,例如,对于使用条件过滤器的页面构建查询,就像在eBay上一样.

但是,据我所知,这些事情没有记录,所以这个问题的最佳实践是什么,不会从支持中删除,也不会混淆那些会阅读我代码的人?

ps
而且 - 对Q()对象使用"&"运算符是否很好?在Django-docs中,我一无所获!

python django filter django-queryset django-q

4
推荐指数
1
解决办法
3984
查看次数

如何定义导入mongodb的分隔符

我有一个数据集合,由|字符分隔.我要将数据集添加到mongodb.所以我需要通过|字符分隔数据.我的mongoimport命令怎么样?

以前,我通过以下命令成功导入csv文件.

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
Run Code Online (Sandbox Code Playgroud)

csv mongodb mongoimport

4
推荐指数
1
解决办法
9693
查看次数

错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中

我有一个表"campaign_items",其中包含列(预算,花费),我想使用公式剩余预算计算剩余预算=预算 - 已用完

现在我在查询下运行:

select distinct a.budget,a.spent 
from campaign_items a 
where campaign_item_id=12345 
order by a.budget-a.spent
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误:

错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中

注意:我无法DISTINCT从查询中删除关键字,因为查询是使用JdbcTemplate生成的

任何人都可以帮我解决这个错误吗?

postgresql

4
推荐指数
1
解决办法
6685
查看次数

proto3 协议缓冲区中“众所周知的类型”的可用性

我看到 StringValue 是字符串消息的消息包装器,我尝试将其用于:

service SomeService {
  // health
  rpc HealthCheck(google.protobuf.Empty)
    returns (google.protobuf.Empty) {}
  // create
  rpc CreateSomething(SomeMessageType)
    returns (StringValue) {}

}
Run Code Online (Sandbox Code Playgroud)

但是,我从 protoc 收到一条消息,例如:

somefile.proto:30:14: "StringValue" 未定义。

我正在使用 proto3 语法。我错过了什么?

protocol-buffers

4
推荐指数
1
解决办法
3309
查看次数

使用带有外键的 Q 对象定义 django 查询集

示例模型:

class Book(models.Model):
    title = models.TextField()

class Author(models.Model):
    book = models.ForeignKey(Book)
    name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

和一些示例数据:

Book:
id  title
1   test111
2   test222
3   test333
4   test444

Author:
book_id  name
1        test111
1        test222
2        test222
2        test333
3        test111
3        test333
4        test111
4        test333
Run Code Online (Sandbox Code Playgroud)

我想获取所有作者姓名包含“111”和“333”的书(因此所有至少有 2 个作者的书:第一个名称为 111,第二个名称为 333)

我可以通过使用链查询来达到这个目标:

books = Book.objects.filter(author__name__icontains="111").filter(author__name__icontains="333")
Run Code Online (Sandbox Code Playgroud)

返回两本书,id 为:3 和 4

有没有办法通过使用 Q 对象来达到上述目标?

django django-queryset django-q

3
推荐指数
1
解决办法
3831
查看次数

Django过滤OR - q对象性能与I性能

什么会有更好的表现?哪个更快?这意味着更低的db负载?

Item.objects.filter(Q(creator=owner) | Q(moderated=False))
Run Code Online (Sandbox Code Playgroud)

要么

result = Item.objects.filter(item.creator = owner) | Item.objects.filter(item.moderated = False)
Run Code Online (Sandbox Code Playgroud)

django django-models django-filter django-q

3
推荐指数
1
解决办法
978
查看次数

为什么点 (.) 在 vi​​m 编辑器的插入模式下不能正常工作?

过去几个月我在 python IDE 中使用 vim,但最近遇到了一个新问题。每当我按下 . (点)在插入模式下,光标不会移动到下一个位置,而是保持在同一位置,并且当我按下 时会发出砰砰声。(点)键。这个问题不让我正确编码。

下面是一张图片。解释问题:-

在此处输入图片说明

在这里,当我写作时turtle.,问题来了,我必须使用箭头键明确地移动一步。请告诉我是否需要上传我的 .vimrc 文件

谢谢

vi vim

3
推荐指数
1
解决办法
703
查看次数

docker构建并发布插件使用情况

我有jenkins作为Docker容器运行,我试图在这里安装jenkins构建和发布插件并在jenkins工作区内复制Dockerfile,但每当我运行构建时,它都会给我:

Started by user Jenkins Admin
Building in workspace /var/lib/jenkins/jobs/workspace
[workspace] $ docker build -t index.docker.io/test/openshift:latest --pull=true /var/lib/jenkins/jobs/test/workspace
ERROR: Cannot run program "docker" (in directory "/var/lib/jenkins/jobs/workspace"): error=2, No such file or directory
java.io.IOException: Cannot run program "docker" (in directory "/var/lib/jenkins/jobs/workspace"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at hudson.Proc$LocalProc.<init>(Proc.java:244)
    at hudson.Proc$LocalProc.<init>(Proc.java:216)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:803)
    at hudson.Launcher$ProcStarter.start(Launcher.java:381)

Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么会这样吗?

jenkins jenkins-plugins docker

3
推荐指数
1
解决办法
3138
查看次数