Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django将计算值保存到模型_Python_Django_Django Models - Fatal编程技术网

Python Django将计算值保存到模型

Python Django将计算值保存到模型,python,django,django-models,Python,Django,Django Models,:) 我是Django初学者,我想向你们这些漂亮的人寻求一些帮助 以下是我试图实现的目标: 我有一个模型-如下所示-我想包含每个符号的分数 class Stock_Score(models.Model): Symbol = models.CharField(max_length=20, null=True) Score = models.FloatField(null=True) 为了计算这个分数,我想使用第二个模型,它包含一个股票列表和一个称为Yrs的每个符号的值: cla

:)

我是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_数据模型,循环符号,检查一个简单的if/else,然后将结果保存到我的第一个模型的“Score”字段下

大概是这样的:

data = Stock_Data.objects.all()

for i in data:
      if i.Yrs > 10:
        Score = 1
      else:
        Score = 0

    Score.save()

对此垃圾代码深表歉意,但我想知道如何才能做到这一点:)


提前感谢。

您可以计算
Stock\u Data
对象的数量,对于这些对象,
Yrs
大于10,使用:

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\u Score
对象并将其保存到数据库中:

Stock_Score.objects.bulk_create(
    [Stock_Score(Symbol=row['Symbol'], Score=row['nYgt10']) for row in qs]
)