【问题标题】:Unable to use my DRF serializers manually无法手动使用我的 DRF 序列化程序
【发布时间】:2014-12-09 14:47:37
【问题描述】:

很奇怪,但每当我尝试使用我的任何 DRF 序列化器来序列化对象时,例如:

me = CustomUser.objects.all()[0]
serializer = CustomUserSerializer(me)

serializer.is_valid()
# --> False
print(serializer.errors)
# {"non_field_errors": ["No input provided"]}

这发生在完全不同的序列化程序和各种对象上。

但是,如果我使用基于类的视图(间接使用相同的序列化程序和相同的对象),我能够接收到 JSON 响应,其中数据按预期序列化。换句话说,调用链接到这个视图的端点

class CustomUserList(generics.ListAPIView):
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer

确实会返回数据库中所有 CustomUsers 的 JSON 表示形式。

一定有什么我不太明白的地方。

【问题讨论】:

    标签: django serialization django-rest-framework


    【解决方案1】:

    Django REST Framework 允许您通过instance 关键字(或第一个位置参数)将对象传递给序列化程序来序列化它。从那里,您只需拨打data 即可。这一切都包含在文档的serializing objects 部分中。

    me = CustomUser.objects.all()[0]
    serializer = CustomUserSerializer(me)
    serializer.data
    

    当您是deserializing data into an object 时,您只需拨打is_valid。您收到的错误(“未提供输入”)是因为您正在尝试验证要反序列化的数据,但您没有传入任何数据。

    【讨论】:

    • 太棒了。我不知道为什么我试图验证定义上有效的东西。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 2022-11-18
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多