python - Django 将计算值保存到模型
问题描述
:)
我是 Django 初学者,我想向你们这些漂亮的人寻求帮助。
这是我要完成的工作:
我有一个模型 - 如下所示 - 我想为每个符号包含一个分数。
class Stock_Score(models.Model):
Symbol = models.CharField(max_length=20, null=True)
Score = models.FloatField(null=True)
为了计算该分数,我想使用第二个模型,其中包含一个股票列表和一个名为 Yrs 的每个符号的值:
class Stock_Data(models.Model):
Symbol = models.CharField(max_length=20, null=True)
Yrs = models.FloatField(null=True)
所以我想的是在我的views.py中导入Stock_Data模型,循环遍历符号,检查一个简单的if/else,然后将结果保存到我的第一个模型中的“分数”字段下。
像这样的东西:
data = Stock_Data.objects.all()
for i in data:
if i.Yrs > 10:
Score = 1
else:
Score = 0
Score.save()
为这个垃圾代码道歉,但我很想知道我将如何做到这一点:)
提前致谢。
解决方案
您可以使用以下方法计算大于 10的Stock_Data
对象数:Yrs
from django.db.models import Count, Q
qs = Stock_Data.object.values('Symbol').annotate(
nYgt10=Count('Yrs', filter=Q(Yrs__gt=10))
).order_by('Symbol')
接下来我们可以制作Stock_Score
对象并将它们保存到数据库中:
Stock_Score.objects.bulk_create(
[Stock_Score(Symbol=row['Symbol'], Score=row['nYgt10']) for row in qs]
)
推荐阅读
- java - 如果返回的 Optional 有值,则按原样返回 Optional,否则调用另一个函数
- javascript - 表单提交后清除无效状态
- c++ - 静态成员变量的 C++ 线程安全
- php - 如何使用 eloquent 模型仅获取单个列的值
- c - 将 void 指针传递给函数的指针
- c# - C# 重载键/值和非键/值类型,使用 var 而不指定类型
- javascript - 您如何在样式化组件中进行条件悬停?
- css - CSS类没有被应用到收音机的标签上
- c# - 如何在 C# 中以有效的方式将文本文件转换为二进制文件
- actions-on-google - actions-on-google:使用 google oAuth 服务器的帐户链接失败