使用以下代码从数据存储区返回记录会产生问题。失败
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中的值不匹配,那么它真的无所谓并且验证不会失败?我正在尝试,必需=假,但还有什么?
数据存储区中的数据不干净。最初我使用批量加载器将数据吹入数据库,没有任何关系组件。我刚刚添加了引用另一个模型的链接,当我以正确和关系的方式输入公司记录时,链接存储在公司字段而不是链接类型中。所以重新解释这个问题,表中的数据与类别不一致,但是我仍然希望返回不受影响的字段,但我似乎无法关闭验证
由于