File tree 1 file changed +34
-0
lines changed
1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1
1
import pytest
2
2
from django .db import models
3
+ from rest_framework .utils import model_meta
3
4
4
5
from rest_framework_json_api import serializers
5
6
from tests .models import DJAModel , ManyToManyTarget
@@ -50,3 +51,36 @@ class ReservedFieldNamesSerializer(serializers.Serializer):
50
51
"ReservedFieldNamesSerializer uses following reserved field name(s) which is "
51
52
"not allowed: meta, results"
52
53
)
54
+
55
+
56
+ def test_get_field_names ():
57
+ class MyTestModel (DJAModel ):
58
+ verified = models .BooleanField (default = False )
59
+ uuid = models .UUIDField ()
60
+
61
+ class AnotherSerializer (serializers .Serializer ):
62
+ ref_id = serializers .CharField ()
63
+ reference_string = serializers .CharField ()
64
+
65
+ class MyTestModelSerializer (AnotherSerializer , serializers .ModelSerializer ):
66
+ an_extra_field = serializers .CharField ()
67
+
68
+ class Meta :
69
+ model = MyTestModel
70
+ fields = "__all__"
71
+ extra_kwargs = {
72
+ "verified" : {"read_only" : True },
73
+ }
74
+
75
+ # Same logic than in DRF get_fields() method
76
+ declared_fields = MyTestModelSerializer ._declared_fields
77
+ info = model_meta .get_field_info (MyTestModel )
78
+
79
+ assert MyTestModelSerializer ().get_field_names (declared_fields , info ) == [
80
+ "id" ,
81
+ "ref_id" ,
82
+ "reference_string" ,
83
+ "an_extra_field" ,
84
+ "verified" ,
85
+ "uuid" ,
86
+ ]
You can’t perform that action at this time.
0 commit comments