QS.all_fields - resets previous .only() and .exlude()
This commit is contained in:
parent
bda4776a18
commit
66baa4eb61
@ -867,11 +867,26 @@ class QuerySet(object):
|
||||
|
||||
|
||||
def exclude(self, *fields):
|
||||
"""Opposite to .only(), exclude some document's fields. ::
|
||||
|
||||
post = BlogPost.objects(...).exclude("comments")
|
||||
|
||||
:param fields: fields to exclude
|
||||
"""
|
||||
fields = self._fields_to_dbfields(fields)
|
||||
self._loaded_fields += QueryFieldList(fields, direction=QueryFieldList.EXCLUDE)
|
||||
return self
|
||||
|
||||
def all_fields(self):
|
||||
"""Include all fields. Reset all previously calls of .only() and .exclude(). ::
|
||||
|
||||
post = BlogPost.objects(...).exclude("comments").only("title").all_fields()
|
||||
"""
|
||||
self._loaded_fields = QueryFieldList(always_include=self._loaded_fields.always_include)
|
||||
return self
|
||||
|
||||
def _fields_to_dbfields(self, fields):
|
||||
"""Translate fields paths to its db equivalents"""
|
||||
ret = []
|
||||
for field in fields:
|
||||
field = ".".join(f.db_field for f in QuerySet._lookup_field(self._document, field.split('.')))
|
||||
|
@ -572,6 +572,29 @@ class QuerySetTest(unittest.TestCase):
|
||||
|
||||
Email.drop_collection()
|
||||
|
||||
def test_all_fields(self):
|
||||
|
||||
class Email(Document):
|
||||
sender = StringField()
|
||||
to = StringField()
|
||||
subject = StringField()
|
||||
body = StringField()
|
||||
content_type = StringField()
|
||||
|
||||
Email.drop_collection()
|
||||
|
||||
email = Email(sender='me', to='you', subject='From Russia with Love', body='Hello!', content_type='text/plain')
|
||||
email.save()
|
||||
|
||||
obj = Email.objects.exclude('content_type', 'body').only('to', 'body').all_fields().get()
|
||||
self.assertEqual(obj.sender, 'me')
|
||||
self.assertEqual(obj.to, 'you')
|
||||
self.assertEqual(obj.subject, 'From Russia with Love')
|
||||
self.assertEqual(obj.body, 'Hello!')
|
||||
self.assertEqual(obj.content_type, 'text/plain')
|
||||
|
||||
Email.drop_collection()
|
||||
|
||||
def test_find_embedded(self):
|
||||
"""Ensure that an embedded document is properly returned from a query.
|
||||
"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user