0

我有一个候选模型

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。还有一个 post 方法,但我不确定这里是否有必要。

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 }}我会得到密钥和所有字段,但由于某种原因我不能只得到名称。我该怎么做?

谢谢。

4

1 回答 1

0

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

state_name = candidate.state.get().name

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

于 2013-07-15T12:54:22.900 回答