簡體   English   中英

Google App Engine Python問題

[英]Google app engine python problem

我在嘗試復制左聯接以從模型a查找模型b中沒有匹配關系的項目時遇到了數據存儲區問題:

class Page(db.Model):
    url = db.StringProperty(required=True)

class Item(db.Model):
    page = db.ReferenceProperty(Page, required=True)
    name = db.StringProperty(required=True)

我想查找沒有任何相關項目的任何頁面。

您無法使用“屬性為空”過濾器查詢商品。 但是,您可以向Page添加一個布爾屬性,以指示是否有項目:

class Page(db.Model):
    url = db.StringProperty(required=True)
    has_items = db.BooleanProperty(default=False)

然后覆蓋Item的“ put”方法以翻轉標志。 但是您可能希望將此邏輯封裝在Page模型中(也許是Page.add_item(self,* args,** kwargs)):

class Item(db.Model):
    page = db.ReferenceProperty(Page, required=True)
    name = db.StringProperty(required=True)

    def put(self):
        if not self.page.has_items:
            self.page.has_items = True
            self.page.put()
        return db.put(self)

因此,對沒有項目的頁面的查詢將是:

pages_with_no_items = Page.all().filter("has_items =", False)

數據存儲區不支持聯接,因此您無法通過單個查詢來做到這一點。 您需要查詢A中的項目,然后針對每個項目進行另一個查詢以確定B中是否有任何匹配的項目。

您是否嘗試過像:

Page.all().filter("item_set = ", None)

應該管用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM