0

私はこのようなことをする必要があります:フィールドを計算し、更新して保存する関数を持っています。

問題は、obj = UserSkillblabla.objects.get(pk=1) でオブジェクトを取得し、obj.calculate_TotalSkillPoints() を呼び出すと、値がフィールドに保存されないことです。

class UserSkillPointProfile(TimeStampedModel):
    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='skillpoint_profile')
    totalSkillPoints = models.IntegerField(default=0)
    skillPointsAbility1 = models.IntegerField(default=0)
    skillPointsAbility2 = models.IntegerField(default=0)
    skillPointsAbility3 = models.IntegerField(default=0)
    skillPointsAbility4 = models.IntegerField(default=0)

    def calculate_TotalSkillPoints(self):
        awards = AwardAsUser.objects.filter(pk=self.user.pk).exclude(assigned=False)
        result = 0
        for aw in awards:
            if (aw.award.action == "+") or (aw.award.action == "addition"):
                result += aw.award.value
            elif (aw.award.action == "x") or (aw.award.action == "multiplication"):
                result *= aw.award.value
            elif (aw.award.action == "-") or (aw.award.action == "subtraction"):
                result -= aw.award.value
            elif (aw.award.action == "/") or (aw.award.action == "division"):
                result /= aw.award.value
            else:
                pass

            self.totalSkillPoints = result
            self.save()
        return result

私は何かが間違っていることを知っています。このクラスから関数を出す必要があるかもしれませんが、instanceobjetc.function() を使用して値を更新すると便利だと思います。私はdjangoリファレンスで似たようなものを見つけませんでした。誰か助けてくれませんか?ありがとうございました :)

4

0 に答える 0