gpt4 book ai didi

django - 在 Django 中动态更改 QuerySet 对象

转载 作者:行者123 更新时间:2023-12-04 18:48:38 26 4
gpt4 key购买 nike

我可以或应该在 View 中这样做吗?

a = SomeTable.objects.all()
for r in a:
if r.some_column == 'foo':
r.some_column = 'bar'

它像冠军一样工作,但我在其他地方尝试了类似的事情,但得到了奇怪的结果,这意味着 QuerySet 对象不喜欢被人玩弄。而且,我在文档中没有看到任何关于这种技巧的好坏。

我知道还有其他方法可以做到这一点,但我特别想知道这是否是一个坏主意,为什么它是坏的,如果它确实是坏的,什么是“最好的”最 django/pythonic 改变值的方法苍蝇会。

最佳答案

这很好,只要您稍后不做任何会导致重新评估查询集的事情 - 例如,切片。这将对数据库进行另一次查询,并且所有修改过的对象都将被替换为新的对象。

一种保护自己免受这种情况的方法是首先转换为列表:

a = list(SomeTable.objects.all())

这样,进一步切片等不会导致新的 db 调用,并且任何修改都将被保留。

关于django - 在 Django 中动态更改 QuerySet 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com