File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change 11import pytest
22from django .db import models
3+ from rest_framework .utils import model_meta
34
45from rest_framework_json_api import serializers
56from tests .models import DJAModel , ManyToManyTarget
@@ -50,3 +51,37 @@ class ReservedFieldNamesSerializer(serializers.Serializer):
5051 "ReservedFieldNamesSerializer uses following reserved field name(s) which is "
5152 "not allowed: meta, results"
5253 )
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+ resource_name = "myTestModel"
71+ fields = "__all__"
72+ extra_kwargs = {
73+ "verified" : {"read_only" : True },
74+ }
75+
76+ # Same logic than in DRF get_fields() method
77+ declared_fields = MyTestModelSerializer ._declared_fields
78+ info = model_meta .get_field_info (MyTestModel )
79+
80+ assert MyTestModelSerializer ().get_field_names (declared_fields , info ) == [
81+ "id" ,
82+ "ref_id" ,
83+ "reference_string" ,
84+ "an_extra_field" ,
85+ "verified" ,
86+ "uuid" ,
87+ ]
You can’t perform that action at this time.
0 commit comments