在Google App Engine中使用db.PropertyReference

时间:2013-03-11 20:55:08

标签: python google-app-engine

我有两种模式:

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对象传递给查询,但我有点迷失。寻求一些指导,谢谢。

0 个答案:

没有答案