2016-07-26 47 views
0

當我運行像mongoengine:如何在非ASCII StringField查詢在EmbeddedDocumentListField

answerSheet = answerSheet.subAnswerSheets.get(
     title=subquiz.title) 

當我的標題就是非ASCII查詢,我得到EmbeddedDocumentList類的數據結構這個方法編碼錯誤。 mongoengine的py:

@classmethod 
def __match_all(cls, i, kwargs): 
    items = kwargs.items() 
    return all([ 
     getattr(i, k) == v or str(getattr(i, k)) == v for k, v in items 
    ]) 

當我刪除str演員,它工作正常。那麼它是我的錯還是源代碼需要改變?

回答

0

希望因此這會爲你工作:

title = subquiz.title.encode('ascii',errors='ignore') 
+0

並使用它,而創造的數據也使得這不會導致問題進一步。 –

+0

謝謝@Piyush S. Wanare,但很抱歉,它沒有工作。在創建數據時,它會導致保存空字符串而不是非ascii而不會出錯。並在進行查詢時,如果存儲的字符串不是ascii,則會再次出現相同的UnicodeEncode錯誤。 我認爲這個問題只是關於EmbeddedDocumentListField,因爲它從來沒有發生在簡單的文檔繼承類。 – Djafari