Fixed EmbeddedDocument validation bug
This commit is contained in:
parent
e05d31eaaf
commit
0bbf3a3d76
2 changed files with 7 additions and 1 deletions
|
|
@ -129,6 +129,7 @@ class EmbeddedDocumentField(BaseField):
|
|||
if not isinstance(value, self.document):
|
||||
raise ValidationError('Invalid embedded document instance '
|
||||
'provided to an EmbeddedDocumentField')
|
||||
self.document.validate(value)
|
||||
|
||||
def lookup_member(self, member_name):
|
||||
return self.document._fields.get(member_name)
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ class FieldTest(unittest.TestCase):
|
|||
content = StringField()
|
||||
|
||||
class PersonPreferences(EmbeddedDocument):
|
||||
food = StringField()
|
||||
food = StringField(required=True)
|
||||
number = IntField()
|
||||
|
||||
class Person(Document):
|
||||
|
|
@ -195,9 +195,14 @@ class FieldTest(unittest.TestCase):
|
|||
person.preferences = 'My Preferences'
|
||||
self.assertRaises(ValidationError, person.validate)
|
||||
|
||||
# Check that only the right embedded doc works
|
||||
person.preferences = Comment(content='Nice blog post...')
|
||||
self.assertRaises(ValidationError, person.validate)
|
||||
|
||||
# Check that the embedded doc is valid
|
||||
person.preferences = PersonPreferences()
|
||||
self.assertRaises(ValidationError, person.validate)
|
||||
|
||||
person.preferences = PersonPreferences(food='Cheese', number=47)
|
||||
self.assertEqual(person.preferences.food, 'Cheese')
|
||||
person.validate()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue