'This will store the question id in self.id,
the question data in self.question, and
the metadata for this specific question in self.qstn_metadata
It will only get the data from the db if it hasn\'t already been
retrieved, or if the update flag is True'

def _store_metadata(self, qstn_id=None, update=False):

    if (qstn_id is not None):
        if (self.id != qstn_id):
            self.id = qstn_id
            update = True
    if (self.id is None):
        self.question = None
        self.qstn_metadata = {}
        return
    if ((self.question is None) or update):
        db = current.db
        question = db((self.qtable.id == self.id)).select(limitby=(0, 1)).first()
        if (question is None):
            raise Exception(('no    question    with    id    %s    in    database' % self.id))
        question.name = current.s3db.survey_qstn_name_represent(question.name)
        self.question = question
        rows = db((self.mtable.question_id == self.id)).select()
        self.rows = rows
        for row in rows:
            self.qstn_metadata[row.descriptor] = row.value.strip('"')
