当前位置: 首页 > 知识库问答 >
问题:

“一旦获取了切片,就无法更新查询”。最佳实践?

公羊英达
2023-03-14

由于我的项目的性质,我发现自己经常从QuerySet中提取片段,如下所示:

Thread.objects.filter(board=requested_board_id).order_by('-updatedate')[:10]

但是这给我留下了一个问题,就是如何用我选择的元素做一些事情,因为任何类型的。更新()或。切片后filter()不起作用。

我知道有几种方法可以绕过它,但它们都很混乱和混乱,严重降低了代码的可读性,特别是当我不得不经常这样做的时候。

克服限幅滤波器限制的最佳方法是什么?

共有1个答案

齐英韶
2023-03-14

到目前为止,根据评论,我发现丹尼尔·罗斯曼的这个解决方案是最不“丑陋”的:

sliced_queryset = Somemodel.objects.filter(field='fieldvalue')[:5]

然后使用<code>id__in=

Somemodel.objects.filter(id__in=sliced_queryset).update(field_to_update='whatever')

它很管用,我刚试过。

我希望Django有一种更“直接”的方式来做到这一点,但它仍然非常简单。如果有人有更好的方法,请发布它,我会把你的答案标记为正确。

作为一个额外的建议,如果您使用它来增加一个字段,比如“视图”字段,您可以像这样清晰地自引用它:

from django.db.models import F

Somemodel.objects.filter(id__in=sliced_queryset).update(views=F('views')+1)
 类似资料:
  • 我知道“newInstance”-Pattern(实例化新Android片段的最佳实践)。但是如果另一个片段更改数据,我如何更新片段的这些参数? 我知道片段/活动之间的回调方法,但这些回调不会更新参数?! 例如:在创建片段时,我将URI与包一起传递给它。然后,另一个片段通过对第一个片段的changeUri(URI-URI)方法回调来更改这个URI。如果然后重新创建片段(例如由于屏幕旋转),它将使用

  • 问题内容: 在Web应用程序(jsp /servlets)中获取EntityManagerFactory的最佳方法是什么?这是一个好方法,何时应创建/打开EntityManagerFactory实例?,还是从JNDI或其他方式获得它更好? 问题答案: 它们是重量级的,应该在应用程序范围内。因此,您需要在应用程序启动时将其打开,并在应用程序关闭时将其关闭。 该如何做取决于您的目标容器。它是否支持EJ

  • 问题内容: 什么是在MySQL中获取累计金额的“正确”查询? 我有一张表格,其中保存有关文件的信息,一个列列表包含文件的大小(以字节为单位)。(实际文件保存在磁盘上的某个位置) 我想要这样的累积文件大小: 现在,我使用以下查询来获得以上结果 但是,我的解决方案非常慢。(大约19秒,没有缓存)。 解释给出以下执行细节 我的问题是: 如何优化上述查询? 更新 我已经更新了问题,以提供表结构和使用20,

  • 我有一个Excel文件,上面有一长串用户名。ColA包含旧用户名ColB包含新用户名。我想在基于excel文件的SQL表中重命名用户。我的问题是:在循环中使用using语句多次调用SQL可以吗?还是有更好的方法,我打开一个连接,让所有的SQL更新查询“一”?

  • 提取切片的最后一个元素的方式是什么? 上述解决方案可行,但似乎有些尴尬。

  • 我正在尝试使用visual studio for mac在我的物理IOS设备(iPhone 7)上调试我的Xamarin Forms项目,它第一次运行良好,但一旦我更改代码并在模拟器上调试,我就无法再在我的物理设备上调试;我没有这个问题,当我改变我的代码和调试再次,只要我是在我的iPhone第一次调试。 一旦发生这种情况,我会得到以下错误: 错误1:无法协同设计“bin/iphone/debug/