django - 使用 Form 或 ModelForm 更新 QuerySet
问题描述
我正在尝试使用 for 更新查询集的所有值,我发现了这种方法:
queryset = Query.objects.filter(version=XXX)
field1 = ModelForm.cleaned['field1']
...
fieldN = ModelForm.cleaned['fieldN']
queryset.update(['field1'=field1, ... , 'fieldN'=fieldN])
但我觉得这不是一种非常干净的方法,有没有更有效的方法?
解决方案
我终于用这种方法做到了:
在forms.py中:
class UpdateAll(forms.Form):
field_1 = forms.FloatField()
field_2 = forms.FloatField()
field_3 = forms.FloatField()
在 view.py 中:
def update_all(request):
queryset = Model.objects.filter(filter=filter)
if request.method == 'POST':
form = UpdateAll(request.POST)
if form.is_valid():
data = form.cleaned_data
queryset.update(**data)
推荐阅读
- sqlalchemy - 如何使用 SQLAlchemy/ORM 映射视图?
- python - bool类型图像到uint8的转换
- python - 使用 pandas 的 puthon 错误:TypeError: can only concatenate str (not "float") to str
- docker - traefik 路由到侦听不同端口的容器
- c# - 使用.net核心中的linq过滤掉实体框架中的数据
- jquery - 如何在不添加新项目的情况下保留键入的值?
- javascript - 缩小cshtml文件asp.net核心中的javascript
- mysql - 如果返回字符串,mySQL CASE 语句将重新查询更深一层的节点
- transform - ARKit 上的“transformPoint”方法
- rundeck - 需要 JAVA 确切版本 Rundeck 自包含启动器安装“rundeck-3.3.10-20210301.war”