Fix querying on (Generic)EmbeddedDocument subclasses fields
This commit is contained in:
@@ -700,7 +700,11 @@ class EmbeddedDocumentField(BaseField):
|
||||
self.document_type.validate(value, clean)
|
||||
|
||||
def lookup_member(self, member_name):
|
||||
return self.document_type._fields.get(member_name)
|
||||
doc_and_subclasses = [self.document_type] + self.document_type.__subclasses__()
|
||||
for doc_type in doc_and_subclasses:
|
||||
field = doc_type._fields.get(member_name)
|
||||
if field:
|
||||
return field
|
||||
|
||||
def prepare_query_value(self, op, value):
|
||||
if value is not None and not isinstance(value, self.document_type):
|
||||
@@ -747,12 +751,13 @@ class GenericEmbeddedDocumentField(BaseField):
|
||||
value.validate(clean=clean)
|
||||
|
||||
def lookup_member(self, member_name):
|
||||
if self.choices:
|
||||
for choice in self.choices:
|
||||
field = choice._fields.get(member_name)
|
||||
document_choices = self.choices or []
|
||||
for document_choice in document_choices:
|
||||
doc_and_subclasses = [document_choice] + document_choice.__subclasses__()
|
||||
for doc_type in doc_and_subclasses:
|
||||
field = doc_type._fields.get(member_name)
|
||||
if field:
|
||||
return field
|
||||
return None
|
||||
|
||||
def to_mongo(self, document, use_db_field=True, fields=None):
|
||||
if document is None:
|
||||
|
||||
Reference in New Issue
Block a user