我有两个具有一对多关系的实体。 Sahip
个实体可能有多个Calisma
。
class Sahip(ndb.Model):
customid=ndb.StringProperty(indexed=True)
adi=ndb.StringProperty(indexed=True)
soyadi=ndb.StringProperty(indexed=True)
ozgecmis=ndb.TextProperty()
tipi=ndb.StringProperty(indexed=True
为此,我使用了KeyProperty
class Calisma(ndb.Model):
sahibi_fk=ndb.KeyProperty(kind=Sahip,indexed=True)
sahibi=ndb.StringProperty(indexed=True) #fk
adi=ndb.StringProperty(indexed=False)
yapimyili=ndb.IntegerProperty(indexed=True)
yapimteknigi=ndb.StringProperty(indexed=True)
en=ndb.IntegerProperty(indexed=True)
boy=ndb.IntegerProperty(indexed=True)
derinlik=ndb.IntegerProperty(indexed=True)
detay=ndb.TextProperty()
我以这种方式插入新实体:
entity=Calisma()
entity.adi=adi
entity.yapimyili=int(yapimyili)
entity.yapimteknigi=yapimteknigi
entity.en=int(en) entity.boy=int(boy)
entity.derinlik=int(derinlik)
entity.detay=detay entity.tip=tip
entity.sahibi=sahibi
entity.sahibi_fk=ndb.Key(Sahip,sahibi)
entity.put()
但是,此查询不起作用:
class agah(webapp2.RequestHandler):
def get(self):
sahip=Sahip.query(Sahip.customid=="suat-atan-1966").get()
calisma=Calisma.query(Calisma.sahibi_fk==sahip.key)
m="***"
for i in calisma:
m=m+i.adi+"<br>"
self.response.write(m)
答案 0 :(得分:1)
query().get()
调用会返回结果列表(可能为空),而不是单个结果。
在你的情况下:
sahip=Sahip.query(Sahip.customid=="suat-atan-1966").get()
表示sahip
是一个列表,因此sahip.key
应生成:
AttributeError:&#39; list&#39;对象没有属性&#39;键&#39;
修复可能是这样的:
results = Sahip.query(Sahip.customid=="suat-atan-1966").get()
if results:
sahip = results[0]
calisma=Calisma.query(Calisma.sahibi_fk==sahip.key)