私はこのようなことをする必要があります:フィールドを計算し、更新して保存する関数を持っています。
問題は、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リファレンスで似たようなものを見つけませんでした。誰か助けてくれませんか?ありがとうございました :)