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

问题描述 投票:0回答:5

这个错误在 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'

我该如何解决这个问题? 链接。它没有回答问题。

django swagger django-serializer
5个回答
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

7
投票

3.14.0 中删除了对 NullBooleanField 的支持。我在 drf-yasg github 上提出了

issue
,请求支持此版本的
drf
。他们还为此发布了一个尚未合并的 PR。


6
投票

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


3
投票

drf-yasg 版本 1.21.4,于 9 月 27 日发布,修复了此问题。

FIXED: Remove NullBooleanFields if the django-rest-framework version >= 3.14.0 (#814)

https://github.com/axnsan12/drf-yasg/releases/tag/1.21.4


0
投票

AttributeError 中得到回答:模块“rest_framework.serializers”没有属性“NullBooleanField”

NullBooleanField 已弃用,将从以下版本开始删除 3.14。相反,使用 BooleanField 字段并设置 allowed_null=True ,它会执行相同的操作。

© www.soinside.com 2019 - 2024. All rights reserved.