Skip to content

Schema generation with an HStoreField gives an incorrect type #6913

@Lucidiot

Description

@Lucidiot

Checklist

  • I have verified that that issue exists against the master branch of Django REST framework.
  • I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
  • This is not a usage question. (Those should be directed to the discussion group instead.)
  • This cannot be dealt with as a third party library. (We prefer new functionality to be in the form of third party libraries where possible.)
  • I have reduced the issue to the simplest possible case.
  • I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)

Steps to reproduce

On any serializer, add an HStoreField.

class HStoredSerializer(serializers.Serializer):
    myfield = serializers.HStoreField()

class HStoredAPIView(CreateAPIView):
    serializer_class = HStoredSerializer
    ...

Expected behavior

Output of ./manage.py generateschema:

paths:
  /api/hstored:
    post:
      operationId: CreateHStored
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              required:
              - myfield
              properties:
                myfield:
                  type: object

Actual behavior

Output of ./manage.py generateschema:

paths:
  /api/hstored:
    post:
      operationId: CreateHStored
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              required:
              - myfield
              properties:
                myfield:
                  type: string

It seems that we should only need to add a line to the FIELD_CLASS_SCHEMA_TYPE dict found here; if that's all we need, I can easily open a PR myself.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions