有没有一种方法可以定义模型中的函数,并通过过滤字段将其默认保存到数据库中?在Python Djnago中



我想做的是计算每个学习风格的百分比值,并将其作为默认值保存到字段**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)

最新更新