简单的Django Rest框架数据保存

时间:2016-07-01 16:09:40

标签: django serialization django-rest-framework

这应该非常简单,但我在尝试访问serializer.data时遇到了奇怪的结果。

我在MediaViewSet基于类的视图方法perform_create中设置了一个异常,因此我可以在保存到数据库之前看到正在发生的事情。

class MediaViewSet(viewsets.ModelViewSet):
    """
    List, create, retrieve, update or destroy media.
    """

    queryset = Media.objects.all()
    serializer_class = MediaSerializer
    permission_classes = (UserDataAccessPermissions,)

    def perform_create(self, serializer):
        raise Exception(serializer)

结果是:

Exception: MediaSerializer(context={'view': <main.views.MediaViewSet object>, 'format': None, 'request': <rest_framework.request.Request object>}, data=<QueryDict: {'type': ['IM'], 'media': [<InMemoryUploadedFile: test.jpg (image/jpeg)>]}>):
    id = IntegerField(label='ID', read_only=True)
    media = FileField()
    type = ChoiceField(choices=(('IM', 'Image'), ('VI', 'Video')), required=False)
    thumbnail = SerializerMethodField()

如果你滚动,看起来好像数据参数保存了正确的媒体文件,没有任何错误。

但是,当我将perform_create方法更改为以下内容时,serializer.data中似乎没有任何内容。

class MediaViewSet(viewsets.ModelViewSet):
    """
    List, create, retrieve, update or destroy media.
    """

    queryset = Media.objects.all()
    serializer_class = MediaSerializer
    permission_classes = (UserDataAccessPermissions,)

    def perform_create(self, serializer):
        raise Exception(serializer.data)

我得到以下内容:

Exception: {'thumbnail': None, 'type': 'IM', 'media': None}

好像所有数据都被删除了,我不明白为什么。有什么建议吗?

0 个答案:

没有答案