pro*_*ink 5 django django-views
可以或者我应该在视图中做到这一点吗?
a = SomeTable.objects.all()
for r in a:
if r.some_column == 'foo':
r.some_column = 'bar'
Run Code Online (Sandbox Code Playgroud)
它就像一个冠军,但我在其他地方尝试了类似的东西,我得到了奇怪的结果,暗示QuerySet对象不喜欢被嘲笑.并且,我没有在文档中看到任何关于这种技巧的好坏.
我知道还有其他方法可以做到这一点,但我特别想知道这是不是一个坏主意,为什么它是坏的,如果它确实很糟糕,什么是"最好的"django/pythonic改变价值观的方式苍蝇会.
只要您以后不执行任何操作会导致重新评估查询集(例如,对其进行切片),这就没问题了.这将对数据库进行另一次查询,并且所有修改过的对象将被替换为新的对象.
保护自己的一种方法是首先转换为列表:
a = list(SomeTable.objects.all())
Run Code Online (Sandbox Code Playgroud)
这样,进一步切片等不会引起新的db调用,并且将保留任何修改.
| 归档时间: |
|
| 查看次数: |
4493 次 |
| 最近记录: |