File tree Expand file tree Collapse file tree 2 files changed +16
-1
lines changed
django_mongodb_backend/fields Expand file tree Collapse file tree 2 files changed +16
-1
lines changed Original file line number Diff line number Diff line change 1
1
import difflib
2
2
3
3
from django .core import checks
4
- from django .core .exceptions import FieldDoesNotExist
4
+ from django .core .exceptions import FieldDoesNotExist , ValidationError
5
5
from django .db import models
6
6
from django .db .models .fields .related import lazy_related_operation
7
7
from django .db .models .lookups import Transform
@@ -134,6 +134,11 @@ def get_transform(self, name):
134
134
135
135
def validate (self , value , model_instance ):
136
136
super ().validate (value , model_instance )
137
+ if not isinstance (value , self .embedded_model ):
138
+ raise ValidationError (
139
+ f"Expected instance of type { self .embedded_model !r} , not { type (value )!r} ."
140
+ )
141
+
137
142
for field in self .embedded_model ._meta .fields :
138
143
attname = field .attname
139
144
field .validate (getattr (value , attname ), model_instance )
Original file line number Diff line number Diff line change @@ -50,6 +50,16 @@ def test_validate(self):
50
50
with self .assertRaisesMessage (ValidationError , msg ):
51
51
obj .full_clean ()
52
52
53
+ def test_validate_wrong_model_type (self ):
54
+ obj = Holder (data = Library ())
55
+ msg = (
56
+ "{'data': [\" Expected instance of type "
57
+ "<class 'model_fields_.models.Data'>, not "
58
+ "<class 'model_fields_.models.Library'>.\" ]}"
59
+ )
60
+ with self .assertRaisesMessage (ValidationError , msg ):
61
+ obj .full_clean ()
62
+
53
63
54
64
class ModelTests (TestCase ):
55
65
def test_save_load (self ):
You can’t perform that action at this time.
0 commit comments