Skip to content

Commit cf582fb

Browse files
Fix OpenAPI zero numeric bounds for list children (#9977)
Co-authored-by: Asif Saif Uddin {"Auvi":"অভি"} <auvipy@gmail.com>
1 parent 7fe6124 commit cf582fb

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

rest_framework/schemas/openapi.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,9 +508,9 @@ def map_field(self, field):
508508
return {'type': FIELD_CLASS_SCHEMA_TYPE.get(field.__class__, 'string')}
509509

510510
def _map_min_max(self, field, content):
511-
if field.max_value:
511+
if field.max_value is not None:
512512
content['maximum'] = field.max_value
513-
if field.min_value:
513+
if field.min_value is not None:
514514
content['minimum'] = field.min_value
515515

516516
def map_serializer(self, serializer):

tests/schemas/test_openapi.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,15 @@ def test_list_field_mapping(self):
6161
(serializers.ListField(), {'items': {}, 'type': 'array'}),
6262
(serializers.ListField(child=serializers.BooleanField()), {'items': {'type': 'boolean'}, 'type': 'array'}),
6363
(serializers.ListField(child=serializers.FloatField()), {'items': {'type': 'number'}, 'type': 'array'}),
64+
(serializers.ListField(child=serializers.FloatField(min_value=0.0)),
65+
{'items': {'type': 'number', 'minimum': 0.0}, 'type': 'array'}),
66+
(serializers.ListField(child=serializers.FloatField(max_value=0.0)),
67+
{'items': {'type': 'number', 'maximum': 0.0}, 'type': 'array'}),
6468
(serializers.ListField(child=serializers.CharField()), {'items': {'type': 'string'}, 'type': 'array'}),
69+
(serializers.ListField(child=serializers.IntegerField(min_value=0)),
70+
{'items': {'type': 'integer', 'minimum': 0}, 'type': 'array'}),
71+
(serializers.ListField(child=serializers.IntegerField(max_value=0)),
72+
{'items': {'type': 'integer', 'maximum': 0}, 'type': 'array'}),
6573
(serializers.ListField(child=serializers.IntegerField(max_value=4294967295)),
6674
{'items': {'type': 'integer', 'maximum': 4294967295, 'format': 'int64'}, 'type': 'array'}),
6775
(serializers.ListField(child=serializers.ChoiceField(choices=[('a', 'Choice A'), ('b', 'Choice B')])),

0 commit comments

Comments
 (0)