2016-07-26 3 views
0

когда я запускаю запрос какmongoengine: как запрос на не-ASCII Стрингфилд в EmbeddedDocumentListField

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

когда мой титул не-ASCII, я получаю ошибку кодирования по этому методу класса EmbeddedDocumentList в datastructures. py of mongoengine:

@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, потому что это никогда не происходит в простом документе Inherited Class. – Djafari