私bulkloader.yamlは、次のようになります。のGoogle AppEngineの、子モデルからデータを取得することはできません
- import: models
transformers:
- model: models.Company
connector: csv
connector_options:
encoding: utf_8
columns: from_header
property_map:
- property: __key__
external_name: companyid
import_transform: int
export_transform: transform.key_id_or_name_as_string
- property: name
external_name: name
- model: models.Home
connector: csv
connector_options:
encoding: utf_8
columns: from_header
property_map:
- property: __key__
external_name: listid
import_transform: int
export_transform: transform.key_id_or_name_as_string
- property: companyid
external_name: companyid
import_transform: transform.create_foreign_key('Company')
export_transform: transform.key_id_or_name_as_string
- property: address
external_name: address
- model: models.Bid
connector: csv
connector_options:
encoding: utf_8
columns: from_header
property_map:
- property: __key__
external_name: listid
import_transform: int
export_transform: transform.key_id_or_name_as_string
- property: listid
external_name: listid
import_transform: transform.create_foreign_key('Home',key_is_id=True)
export_transform: transform.key_id_or_name_as_string
- property: bidtext
external_name: bidtext
import_transform: db.Text
私のmodels.pyは、私は私の地元のdevの上のデータをアップロードしたこの
from google.appengine.ext import db
# Models
class Company(db.Model):
"""Models a real estate company"""
companyid = db.Key()
name = db.StringProperty()
class Home(db.Model):
"""Models an apartment, house, villa etc and its selling details"""
listid = db.Key()
companyid = db.ReferenceProperty(Company, collection_name='company')
address = db.StringProperty()
class Bid(db.Model):
"""Models bidding against a listid from Home model"""
listid = db.ReferenceProperty(Home, collection_name='biddings')
bidtext = db.TextProperty()
のように見えますサーバーと私はhttp://localhost:9999/_ah/admin/datastoreを使用してデータを表示できます。したがって、データはアップロードされ、存在します。私は外来の鍵も見る。
親オブジェクトに基づいて子データにアクセスすることができません。空を返します。貼り付けの下には、私が地元のdevのデータストア上のインタラクティブコンソールで実行されているものです:
from google.appengine.ext import db
from models import Home,Bid,Company
#can access parent data from child i.e. Home
bd = Bid.get_by_id(4242)
hhh = Home.get_by_id(int(bd._listid.name()))
print hhh.state
#Again, can access parent data from child i.e. Company
h = Home.get_by_id(4242)
print h.address
c = Company.get_by_id(int(h._companyid.name()))
print c.website
#Cannot find any data here (biddings is a collection name defined in Bid model)
b = Bid.gql("WHERE listid = :1", h)
for x in h.biddings:
print x.bidtext
出力:
London
Riverview 24,
http://www.houses.com/
あなたは2つの全く異なる質問を投稿しました。それらを分けてください。また、最初の質問には完全なスタックトレースを、2番目の質問にはモデル定義を含める必要があります。 –
最初の質問を削除し、2番目の質問にモデル定義を追加しました。ありがとう。 –
h.biddingsの代わりに 'b = Bid.gql( "where listid =:1"、h.key())を反復してみましたか? –