AttributeError:模块“rest_framework.serializers”在 Swagger 内的 Django 中没有属性“NullBooleanField”

Pra*_*thi 10 django django-serializer swagger

即使 django 没有在任何地方导入,也会引发此错误。它由 OpenAPISchemaGenerator 抛出,如下所示:

 File "/opt/hostedtoolcache/Python/3.8.13/x64/lib/python3.8/site-packages/drf_yasg/inspectors/field.py", line 406, in <module>
    (serializers.NullBooleanField, (openapi.TYPE_BOOLEAN, None)),
AttributeError: module 'rest_framework.serializers' has no attribute 'NullBooleanField'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?关联。它没有回答问题。

小智 15

NullBooleanField 在 DRF 3.14.0 中被删除 - 请参阅https://github.com/encode/django-rest-framework/pull/8599

建议避免使用 3.14.0,除非您能找到其他方法来解决。

djangorestframework>=3.13.1,!=3.14.0
Run Code Online (Sandbox Code Playgroud)


小智 6

您使用哪个 drf 版本?我今天遇到了同样的问题,从 djangorestframework = "^3.13.1" 更改为 djangorestframework = "3.13.1" 解决了这个问题。我猜今天是 drf 3.14 的发布


Pra*_*thi 6

3.14.0 中删除了对 NullBooleanField 的支持。我在github 上提出了一个问题drf-yasg,请求支持此版本的drf. 他们还为此发布了一个尚未合并的 PR。