更新时间:2023-11-13 15:25:28
我发现了可以解决此问题的其他方法.虽然,我仍然不明白为什么我的代码在问题中不起作用.如果您有更好的方法,我仍在寻找:)
I found a work around that might help others with this issue. Though, I still do not understand why my code in the question does not work. If you have a better way, I am still looking :)
-
这个想法是在ViewSet
中覆盖在POST上创建的内容,并绕过ModelSerializer
.
The idea is to override the creation on POST in the ViewSet
and bypass the ModelSerializer
.
class MessageViewSet(viewsets.ModelViewSet):
queryset = Message.objects.all()
serializer_class = MessageSerializer
def perform_create(self, serializer):
msg = Message.objects.create(Subject=self.request.data['Subject'], To=self.request.data['To'], From=self.request.data['From'], Text=self.request.data['stripped-text'])
msg.save()
class MessageSerializer(serializers.ModelSerializer):
Text = serializers.CharField(source='body-plain')
class Meta:
model = Message
fields = ['From', 'To', 'Subject', 'Text']
read_only_fields = ['Text']
class Message(BaseModel):
From = models.CharField(max_length=500)
To = models.CharField(max_length=500)
Subject = models.CharField(max_length=500)
Text = models.CharField(max_length=10000)
timestamp = models.DateTimeField(auto_now=True)