django - 在 DjangoRestFramework 中,是否期望忽略 MultipleChoiceField 默认属性?
问题描述
我有以下使用 MultipleChoiceField 的请求序列化程序
class CompletedOrderStatusDefault:
requires_context = False
def __call__(self, serializer_field):
# -----> this code is never hit?!
return [OrderStatus.COMPLETED]
class OrderListRequestSerializer(serializers.Serializer):
...
order_statuses = serializers.MultipleChoiceField(
required=False,
default=CompletedOrderStatusDefault(),
choices=AllowedOrderStatus.ALLOWED,
)
调用中的代码在请求期间永远不会被命中,并且该字段的值是一个空集。这是我应该提出的错误,还是我错误地期望此 MultipleChoiceField 使用默认值?如果是这样,当传入请求中未指定参数时,应如何设置默认值?
解决方案
__call__
当方法被实现时,类是不可调用的,但它们的实例是可调用的。因此,您应该传入类的实例而不是类本身:
order_statuses = serializers.MultipleChoiceField(
required=False,
default=CompletedOrderStatusDefault(),
choices=AllowedOrderStatus.ALLOWED,
)
推荐阅读
- python-3.x - 如何使用 Python 在文件夹名称中测试是否存在年份,但没有括号
- node.js - 将 mongodb 数据导出为 csv
- python - 如何添加
到每个句子的开头和结尾 - xml - 我收到一个 XML 错误,不知道如何修复它
- java - Kibana 中 APM 的代理状态中未显示收到的 APM Java 代理数据
- spring-boot - Spring Boot WebClient OAuth - 同时命中多个请求时超时
- angular - 绑定材质表到api节点表
- c++ - 为什么“抛出”会显示警告?
- java - 如何找到流的标准化均值?
- mongodb - 从排序结果中获取文档 ID 之前的 MongoDB 中的 N 个文档