django - Django:模型上的数学
问题描述
我需要对一个值做一些数学运算,我对 F() 感到非常困惑。我已经阅读了文档并搜索了示例,但我缺少一些基础知识。您能否提供解决方案并提供一些有关如何理解这一点的指示?我在下面的尝试被注释掉了。我只是想将 Mb 转换为 GB。如果我能得到 2 个十进制值,那就太好了。
class DatastoreInfo(models.Model):
[ ... ]
total_capacity = models.IntegerField(db_column='Total_Capacity', blank=True, null=True)
[ ... ]
class Meta:
managed = False
db_table = 'Datastore_Info'
def ecsdatastores(request):
form = myForm()
results = {}
if request.method == 'POST':
if 'listxyz' in request.POST:
form = myForm(request.POST)
taf = form['taf'].value()
results = DatastoreInfo.objects.filter(f_hostname=c_name)
# results = DatastoreInfo.objects.filter(f_hostname=c_name, total_capacity=F('total_capacity') / 1000)
# results = DatastoreInfo.objects.update(total_capacity=F('total_capacity') / 1000).filter(f_hostname=c_name)
return render(request, 'dpre/datastoreinfo.html', {'form': form , 'results': results})
解决方案
你几乎在那里。您需要组织查询,因此首先过滤到适用的行,然后使用 F 函数作为值应用更新。
# First take your filtered rows
results = DatastoreInfo.objects.filter(f_hostname=c_name)
# Then, on the filtered queryset, you can apply the update.
results.update(total_capacity=F('total_capacity') / 1000)
您可以看到这就像Django F 表达式文档中的记者示例一样。
reporter = Reporters.objects.filter(name='Tintin')
reporter.update(stories_filed=F('stories_filed') + 1)
编辑:作为旁注,如果从 GB 转换为 MB,您可能需要除以 1024,而不是 1000。
推荐阅读
- create-react-app - create-react-app 中的生产构建中的链接已损坏
- javascript - 如何使用链接调用 post 函数
- javascript - Jest 允许对象结构匹配的多种类型
- bash - 创建文件夹层次结构,并设置权限
- embedded-linux - 错误:core-image-minimal-1.0-r0 do_rootfs:安装后拦截挂钩“update_font_cache”失败
- html - Bootstrap 4:修复容器底部的内容
- java - java高级rest客户端连接给出ssl错误
- javascript - 我在 heroku 上的反应应用程序打开主页但不会打开其他页面
- docker - 将 docker-compose 用于 asp.net 核心项目时未命中断点
- string - 您如何检查字符串是否以 Ada 中的另一个字符串结尾?