0

こんにちは、Google appengine で非常に小さなアプリケーションを作成しており、Python を使用しています。私の問題は、de db.model (「クライアント」と「リクエスト」) を使用する 2 つのテーブルがあることです。テーブル「クライアント」にはメールと名前のフィールドがあり、テーブル「リクエスト」にはメールと問題のフィールドがあります。2 つのテーブルで電子メールが同じ場合、各要求に対して電子メール、問題、およびクライアント名を返すクエリを実行したいと考えています。誰でも助けてもらえますか?

4

2 に答える 2

3

アプリ エンジン データストアは結合をサポートしていないため、GQL でこの問題を解決することはできません。クライアント用とリクエスト用の 2 つの get を使用するか、ReferenceProperty を使用して 2 つのエンティティ間の関係を確立することができます。

1 対多の関係をモデル化する必要がある場合は、参照プロパティを使用して行うことができます。あなたの場合、次のようになります。

class Client(db.Model):
    email = db.UserProperty()
    name = db.StringProperty()

class Request(db.Model):
    client = db.ReferencePrpoerty(Client, collection_name='requests')
    issue = db.StringProperty()

Request が関連付けられている Client エンティティは、自動的にrequestsと呼ばれるプロパティを取得します。これは、扱っている特定の Client エンティティにクライアントフィールドが設定されているすべての Request エンティティを返す Query オブジェクトです。

Request エンティティを作成するコードが、特定のユーザーの Client エンティティを祖先として持つように各新しいエンティティを設定することを確認することもできます。これらの関連付けられたアイテムを同じエンティティ グループに保持すると、パフォーマンス上の理由とトランザクションに役立つ場合があります。

于 2010-01-04T23:50:40.577 に答える
0

このモデルを使用して:

class Client(db.Model):
    email = db.StringProperty()
    name = db.StringProperty()

class Request(db.Model):
    client = db.ReferenceProperty(Client, collection_name='requests')
    issue = db.StringProperty()    

このコードでデータをクエリできます

from modelos import Client,Request

ctes=Client.all().filter("email =","somemail@mailbox.com.mx")

for ct in ctes:
   allRequest4ThisUser=Request.all().filter("client =",ct)
   for req in allRequest4ThisUser:
     print req.issue
于 2010-01-13T01:13:41.550 に答える