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)

カテゴリがCatNameであるすべてのプロジェクトを取得する方法

うーん

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

動作しませんか?

4

1 に答える 1

4

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

ProjectCategoryまず、次のコマンドを使用して、データストアから目的のエンティティを取得します。

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

次に、次のようにクエリのパラメータとして使用します。

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

2番目のアプローチは、インスタンスの暗黙的なmodelname_setプロパティを使用することです。ProjectCategory

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

pjc.project_set.fetch(10) #should contains some CatName projects 
于 2011-07-13T14:21:22.183 に答える