Django Сохранение расчетного значения в модель - PullRequest
2 голосов
/ 13 апреля 2020

:)

Я новичок Django, и я хотел бы попросить вас о помощи, прекрасные люди.

Вот что я пытаюсь сделать sh:

У меня есть модель (показанная ниже), в которой я хотел бы указать оценку для каждого символа.

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)

Итак, я думал об импорте модели Stock_Data в мои views.py, l oop через символы, отметьте простой if / else, а затем сохраните результат в моей первой модели в поле «Оценка».

Примерно так:

data = Stock_Data.objects.all()

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

    Score.save()

Извинения за этот мусорный код, но я ' Мне бы понравились некоторые идеи о том, как я смог бы выполнить sh это:)

Заранее спасибо.

1 Ответ

1 голос
/ 13 апреля 2020

Вы можете рассчитать количество Stock_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_Score объектов и сохранить их в базе данных:

Stock_Score.objects.bulk_create(
    [Stock_Score(Symbol=row['Symbol'], Score=row['nYgt10']) for row in qs]
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...