2013-04-22 52 views
0

錯誤GAE ReferencePropertyResolveError - 刪除父實體

TemplateSyntaxError: Caught ReferencePropertyResolveError while rendering: ReferenceProperty failed to be resolved: [u'Image', 12345678L] 

模式

#ModelBase class extends from db.Model 

class Article(TaggableModel): 
    ... 
    image = db.ReferenceProperty(Image, collection_name='image_set') 
    image_blob = blobstore.BlobReferenceProperty() 

class BlobStoreImage(ModelBase): 
    ... 
    title = db.StringProperty() 
    alt = db.TextProperty(default="") 
    blobkey = blobstore.BlobReferenceProperty() 

class Image(ModelBase): 
    ... 
    title = db.StringProperty() 
    original = db.BlobProperty() 

據我瞭解,有可能指的是不存在的Imageid='12345678L'文章。但是,似乎是you can't query individual fields in app engine。看到這種情況,如何通過刪除與不存在的圖像關聯的Article或使用上面的id創建圖像來解決此錯誤。

我已經嘗試過後者,並且服務器返回了200個代碼,但也許我的語法錯誤。

回答

0

鏈接的問題是a)過時和b)與您的問題完全無關。當然,你可以通過ID查詢一個單獨的圖像,這不是尼克在那裏所說的(僅供參考)他說你不能做一個只提取單個字段而不是整個記錄的查詢,這在時間但實際上你現在可以通過使用projection queries)。

使用正常的DB查詢語法,你可以簡單地找到相關圖片ID文章如下:

from google.appengine.ext import db 
image_key = db.Key.from_path(u'Image', 12345678L) 
article = Article.all().filter('image', image_key).get() 

如果這是混淆了你,你應該去閱讀datastore query documentation,這是全面的。

+0

首先 - 感謝您的快速響應!一個注意事項:我不認爲最後需要'''.get()'''。我還沒有瀏覽完整的文檔,但這是有道理的。如果由於某種原因,現場查詢不可用,我會發現這很奇怪。 – snakesNbronies 2013-04-22 10:22:54

+1

的get或orvalent是必需的,其他明智的文章將被分配一個查詢對象。然後你可以迭代這樣一個對象,但是因爲你想要一個效率低下且笨拙的單個實體。 – 2013-04-22 11:08:15