这应该非常简单,但我在尝试访问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}
好像所有数据都被删除了,我不明白为什么。有什么建议吗?