2011-07-13 15 views
2
class ProjectCategory(db.Model): 
    name = db.StringProperty("Category name", required = True) 

    def __str__(self): 
     return str(self.name) 

class Project(db.Model): 
    name = db.StringProperty("Name", required = True) 
    category = db.ReferenceProperty(ProjectCategory) 
    description = db.TextProperty("Description", required = True) 
    #file_name = db.StringProperty("File name", required = True) 
    file = db.BlobProperty("Image") 

    whenstarted = db.DateTimeProperty("Start time") 
    whenended = db.DateTimeProperty("End Time") 

    def __str__(self): 
     return str(self.title) 

すべてのプロジェクトを取得するにはどのようにカテゴリがCatNameGoogle App Engineを - データストア - GQLクエリ

ですうーん

db.GqlQuery("SELECT * FROM Project WHERE category = :1", "CatName") 

は動作しませんか?

答えて

4

ProjectCategoryインスタンスのキーの代わりに"CatName"文字列を渡しているため、クエリが機能しません。

を有する第1データストアから希望ProjectCategoryエンティティを取得:このようなクエリのパラメータとして使用

pjc = GqlQuery("SELECT * FROM ProjectCategory WHERE name = :1", "CatName").get() 

db.GqlQuery("SELECT * FROM Project WHERE category = :1", pjc.key()) 

第二のアプローチは、暗黙を使用することですmodelname_setProjectCategoryインスタンスのプロパティ:

pjc = GqlQuery("SELECT * FROM ProjectCategory WHERE name = :1", "CatName").get() 

pjc.project_set.fetch(10) #should contains some CatName projects 
+0

ありがとうございます。編集後、正常に動作します。 –

関連する問題