获取密钥的一个字段而不是完整密钥

时间:2013-07-15 12:35:39

标签: google-app-engine google-cloud-datastore webapp2

我有一个候选人模型

class Candidate(ndb.Model):
    name = ndb.StringProperty()
    phone = ndb.StringProperty()
    location_name = ndb.StringProperty()
    state = ndb.KeyProperty(kind=Setting)

称为提交状态的模型

class SubmissionState(ndb.Model):
    name = ndb.StringProperty(required=True)
    description = ndb.TextProperty()

模型设置用于根据用户选择的类别处理设置。所有这一切都很好。

这是views.py。还有一种帖子方法,但我不确定这是否必要。

class EditSubmission(webapp2.RedirectHandler):

    def get(self):
        candidateid = self.request.path.split('/')[-1]
        candidate = Candidate._get_by_id(int(candidateid))
        template_values = {'candidate': candidate, }
        path = os.path.join(os.path.dirname(__file__), '../templates/edit_submission.html')
        self.response.write(template.render(path, template_values))

这是模板部分:

    <tr>
        <th><label for="id_state">Submission State:</label></th>
        <td><input id="id_state" type="text" name="state" value="{{ candidate.state.name }}"/></td>
    </tr>

如果我{{ candidate.state }}我得到了密钥和所有字段,但由于某种原因我不能只得到这个名字。我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:0)

candidate.state只是指向SubmissionState的键。您的应用需要向数据存储区发出另一个请求以获取SubmissionState实体,如下所示:

state_name = candidate.state.get().name

您可以在处理程序中执行get(),然后将state_name添加到模板值中,以便在模板中可用。