我有两个模型:
class Person(db.Model):
name = db.StringProperty()
role = db.StringProperty(default = "", choices = ["Engineering", "Marketing", "Care", "Sales"])
class Item(db.Model):
user_name = db.ReferenceProperty(Person)
computer_type = db.StringProperty(default = "", choices = ['Dell Latitude E6500', 'Dell Latitude E5510', 'Dell Latitude E5500' ])
hostname = db.StringProperty()
serial = db.StringProperty()
我想使用 Person 模型中的 Name 作为 Item Model 中的 user_name 来存储它们,并将它们显示在网页上。
我的 get 看起来像这样:
class ItemPage(webapp.RequestHandler):
def get(self):
query_comp = db.GqlQuery("SELECT * FROM Item ORDER BY user_name")
template_values = {
'query_comp': query_comp
}
path = os.path.join(os.path.dirname(__file__), 'table.html')
self.response.out.write(template.render(path, template_values))
table.html 看起来像这样:
{% for item in query_comp %}
<tr style='white-space: nowrap; overflow: hidden; text-overflow:ellipsis;'>
<td>{{ item.fname }}</td>
<td>{{ item.computer_type }}</td>
<td>{{ item.hostname }}</td>
<td>{{ item.serial }}</td>
</tr>
{% endfor %}
我得到的错误是 AttributeError: 'unicode' object has no attribute 'has_key'
我很确定我的问题是我没有正确引用 Person 模型中的 name 对象,我目前只将 key 对象返回给 Item 模型,这就是我要打破的地方。我已经尝试过查看文档,但据我研究,它们与使用 Gql 查询无关。我想我必须将一个Item.person.name
对象传递给查询,但我有点迷茫。求指导,谢谢。