后,我公司目前有以下视图集:Django的REST框架perform_create:你不能调用`.save()``访问serializer.data`
class ArtistProfileViewSet(viewsets.ModelViewSet):
queryset = ArtistProfile.objects.all()
serializer_class = ArtistProfileSerializer
def perform_create(self, serializer):
if serializer.is_valid():
serializer.save()
用下面的序列化:
class SimpleArtistTrackSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ArtistTrack
fields = (...my fields...)
class ArtistProfileSerializer(serializers.HyperlinkedModelSerializer):
owners = UserSerializer(many=True, required=False)
tracks = SimpleArtistTrackSerializer(many=True, required=False)
class Meta:
model = ArtistProfile
fields = (...my fields...)
我收到以下错误:
AssertionError: You cannot call `.save()` after accessing `serializer.data`.If you need to access data before committing to the database then inspect 'serializer.validated_data' instead.
我看不到我将在哪里编辑serializer.data对象。有什么我错过,会导致此编辑?我该如何解决这个错误?
我很少需要在视图中使用方法重写,当我需要重写代码时,它通常会以黑客和原始重写代码的形式复制粘贴。尽可能在串行器上实现东西通常会更好。是不是可以把你的东西放到串行器的'create()'方法中? – pasztorpisti
我同意我应该重新调查我是如何做到这一点的。不过,我仍然觉得这可能是问题的表现。我直接从DRF的文档中获取了该代码。 –