Computed fields from multiple columns
I'm new to programming and have a question
How can I make a computed field that adds up from another table
depending on the contents of the first table?
eg A multi choice exam has the results entered by formfactory.
The answers and their scores are stored in a separate table

db
table:answers
answers.question,       answers.answer, answers.score
1. 3rd planet,          a. mars,                        0
1. 3rd planet,          b. Earth,                       10
1. 3rd planet,          c. Pluto,                       0
2. Best movie,          a. Toy Story 3,         5
2. Best movie,          b. Casablanka,          10
3. Best movie,          c. Twilight,                    -1000

db
table:exam
exam.id exam.name       exam.score      exam.question01 exam.question02
1               Fred  Smith     20                      b. Earth                
        b.Casablanka
2               Sarah Smith     15                      b. Earth                
        a.Toy Story 3

As can be seen, the exam score is the sum of the answer scores given.

My difficulty is in the model...

m = DAL ('sqlite://storage.sqlite')
from gluon.tools import *
crud = Crud(globals(),m)
m.define_table('answers',
Field('question'),
Field('answer'),
Field('score',int))

m.define_table('exam',
Field('name'),

Field('score',compute=lambda
r:m(m.answers.answer==r.question01).select()[0].score
 
+m(m.answers.answer==r.question02).select()[0].score),
Field('question01'),
Field('question02'))

It reads the score quite well if checking only one question, but if
adding both, it returns None.
How could I modify it to add up from multiple questions?
You help is greatly appreciated.



Reply via email to