【问题标题】:Google App Engine Python, query from related entitiesGoogle App Engine Python,来自相关实体的查询
【发布时间】:2017-08-04 14:57:24
【问题描述】:

我有两个具有一对多关系的实体。 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)

【问题讨论】:

    标签: google-app-engine-python


    【解决方案1】:

    query().get() 调用返回结果列表(可能为空),而不是单个结果。

    在你的情况下:

    sahip=Sahip.query(Sahip.customid=="suat-atan-1966").get()
    

    表示sahip 是一个列表,所以sahip.key 应该产生:

    AttributeError: 'list' 对象没有属性 'key'

    解决办法可能是这样的:

    results = Sahip.query(Sahip.customid=="suat-atan-1966").get()
    if results:
        sahip = results[0]
        calisma=Calisma.query(Calisma.sahibi_fk==sahip.key)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多