我有一个PostSerializer,而这个序列化器有一个user字段。我也有一个UserSerializer。所以我想像这样
在PostSerializer中使用UserSerializerclass PostSerializer(serializers.ModelSerializer):
user = UserSerializer(many=False)
class Meta:
fields = ('user', 'title')
但是当我尝试在CreateView中使用时出现错误,因为我不发送UserSerializer数据,而是发送了user_id。
我必须在“创建”和“列表”视图中使用相同的序列化器。因为我习惯使用ListCreateAPIView。
答案 0 :(得分:2)
当我不得不处理这种序列化时,我会这样做:
class PostSerializer(serializers.ModelSerializer):
user_data = UserSerializer(
read_only=True,
source='user',
)
class Meta:
fields = (
'user',
'user_data',
'title',
)
阅读时会得到user_data
,写时只需要用户ID为user
。