我想做的是计算每个学习风格的百分比值,并将其作为默认值保存到字段**result** on AssessmentLearningStyle
模型
这是型号
#MODEL_FOURTEEN
class QuestionResults(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
student = models.ForeignKey(to=FacilityUser, on_delete=models.SET_NULL, null=True, blank=True)
question = models.ForeignKey(to=QuestionLearningStyle, on_delete=models.SET_NULL, null=True, blank=True)
agree = models.BooleanField(null=False)
disagree = models.BooleanField(null=False)
def __str__(self):
return str(self.question)
#MODEL_FIFTEEN
class AssessmentLearningStyle(models.Model):
@property
def test(self):
u = self.learning_style
s = 0
if u == QuestionResults.question.learning_style:
k = int(QuestionResults.objects.filter(agree=True, question__learning_style=self.learning_style).count())
l = int(QuestionResults.objects.filter(question__learning_style=self.learning_style).count())
if l != 0:
s = (k/l) * 100
else:
s = 0
return float(s)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
student = models.ForeignKey(to=FacilityUser, on_delete=models.SET_NULL, null=True, blank=True)
assessent_date = models.DateField(blank=True, null=True)
learning_style = models.ForeignKey(to=LearningStyle, on_delete=models.SET_NULL, null=True, blank=True)
result = models.FloatField(default=test, editable=False)
def __str__(self):
return str(self.student)
我想将test function
的值保存到结果字段。。。但它说float不能接受财产的价值。。。如果我移除财产。。。这个方法根本不起作用。。。你们能帮我解决这个问题吗?或者给我看一个更好的方法?
区块报价
已尝试覆盖保存函数
Class AssignmentLearningStyle(models.Model):
def save(self, *args, **kwargs):
self.result = self.test
super(AssignmentLearningStyle, self).save(*args, **kwargs)