从GAE返回记录并引用模型之间的参考

时间:2012-05-23 16:19:49

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

使用以下代码从数据存储区返回记录会产生问题。失败

q = Company.all()
for mycompany in q:
   add = mycompany.companyname

生成以下错误,我根本无法理解问题所在。数据存在,返回q.count()给出正确的记录数。字段名称也是正确的,但我不知道这可能出错的地方?这是错误消息:

Traceback (most recent call last):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/s~biomapit/1.359109961814230311/showcompanies.py", line 154, in get
    for mycompany in q:
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 2313, in next
    return self.__model_class.from_entity(self.__iterator.next())
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 1442, in from_entity
    return cls(None, _from_entity=entity, **entity_values)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 974, in __init__
    prop.__set__(self, value)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 3702, in __set__
    value = self.validate(value)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 3734, in validate
    if value is not None and not value.has_key():
AttributeError: 'Category' object has no attribute 'has_key'

如果我尝试使用get()返回一条记录,也会发生同样的事情。我很困惑,但验证似乎表明返回结果存在问题,尽管我在公司模型中更改了required = False。但是,当我关闭引用另一个模型时,它似乎工作。那么有一种方法可以提供参考,例如

class Company(db.Model):
    companyurl = db.StringProperty(required=False)
    companyname = db.StringProperty(required=False)
    companycategory = db.ReferenceProperty(CompanyCategory,required=False)

使用模型

class CompanyCategory(db.Model):
    categoryname = db.StringProperty(required=False)

    def __unicode__(self):
            return u'%s' % (self.categoryname)

没有这些验证错误?可能是公司基础表中的数据与类别的数据不匹配。那么我该如何才能完成这项工作或关闭验证,以便如果我在Category中的值与CompanyCategory中的值不匹配,那么它真的无所谓并且验证不会失败?我正在尝试,必需=假,但还有什么?

数据存储区中的数据不干净。最初我使用批量加载器将数据吹入数据库,没有任何关系组件。我刚刚添加了引用另一个模型的链接,当我以正确和关系的方式输入公司记录时,链接存储在公司字段而不是链接类型中。所以重新解释这个问题,表中的数据与类别不一致,但是我仍然希望返回不受影响的字段,但我似乎无法关闭验证

由于

0 个答案:

没有答案