我有两种模式:
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来存储它们,并将它们显示在网页上。
我的看法如下:
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'对象没有属性'has_key'
我很确定我的问题是我没有正确引用Person模型中的name对象,我目前只返回Item模型的关键对象,这就是我要破解的地方。我已经尝试过浏览文档,但就我研究过的问题,他们没有任何关于使用Gql查询的内容。我想我必须将Item.person.name
对象传递给查询,但我有点迷失。寻求一些指导,谢谢。