こんにちは私は次のモデルを持っています
class Student(models.Model):
student_id = models.CharField(max_length=3, unique=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
gender = models.CharField(max_length=1)
teacher = models.ForeignKey(Teacher)
def maths_cal_1(self):
if self.student_model.filter(test__test_name__iexact="maths"):
return self.student_model.s1- self.student_model.start
class Test(models.Model):
test_name = models.CharField(max_length=40)
test_out_of = models.IntegerField(null=True, blank=True)
CHOICE = (
(u'ENG', u'English'),
(u'MTS', u'Maths'),
)
KLA = models.CharField(max_length=10, choices=CHOICE)
class Display(models.Model):
full_name = models.ForeignKey(Student, related_name='student_model')
test = models.ForeignKey(Test)
start = models.CharField(max_length=10, null=True, blank=True)
s1 = models.CharField(max_length=10, null=True, blank=True)
私が理解できないのは、表示モデルの開始フィールドとs1フィールドに入力された数値に基づいて、その場で簡単な数学演算を計算する方法です。
'maths_cal_1'メソッドでこれを試みましたが、テンプレートで結果をレンダリングしようとすると、メソッドを配置するモデルに応じてエラーまたは空白が発生します。問題は、各学生オブジェクトに多くのテストがあると信じていることです。 。希望のテストを正しく計算して結果を返すことができないようです。この場合、各生徒のmathsTestオブジェクトの計算s1-startフィールドを返します。その場で各学生の個々のテストモデルごとにこれらの計算を行うにはどうすればよいですか?ありがとう。
更新:作業コード:
def maths_cal_1(self):
cal_list = []
for tname in ['Maths']:
try:
maths_test = self.student_model.get(test__test_name__iexact=tname)
result = int(maths_test.s1) - int(maths_test.start)
if result:
cal_list.append(result)
else:
cal_list.append("")
except (Display.DoesNotExist, ValueError):
cal_list.append("")
return cal_list