sid*_*ber 1 python django-rest-framework
我只希望AnchorSerializer()对 GET 请求进行序列化,以便将序列化的对象作为响应返回。在创建AnchorToUser对象时的 POST 请求中需要一个整数。
class AnchorToUserSerializer(serializers.ModelSerializer):
# Add the username from the user object relation.
user = serializers.ReadOnlyField(source='user.username')
# Serialize the nested anchor.
anchor = AnchorSerializer() # Should only be used with GET.
class Meta:
model = AnchorToUser
fields = (
'anchor',
'user',
'created_at'
)
Run Code Online (Sandbox Code Playgroud)
也许您可以为GETand使用不同的序列化程序POST。
class AnchorToUserGetSerializer(serializers.ModelSerializer):
user = serializers.ReadOnlyField(source='user.username')
anchor = AnchorSerializer(read_only=True) # only used for serialization
class Meta:
model = AnchorToUser
fields = ('anchor', 'user', 'created_at')
class AnchorToUserPostSerializer(serializers.ModelSerializer):
user = serializers.ReadOnlyField(source='user.username')
anchor = serializers.IntegerField(write_only=True) # accept integer values
class Meta:
model = AnchorToUser
fields = ('anchor', 'user', 'created_at')
Run Code Online (Sandbox Code Playgroud)
要决定使用什么序列化程序,您可以覆盖该get_serializer_class()方法。
在您的视图或视图集中,您可以执行以下操作:
def get_serializer_class(self):
if request.method == 'POST':
return AnchorToUserPostSerializer
return AnchorToUserGetSerializer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |