Django REST Framework通过PK以外的其他字段设置相关字段(不带NestedSerializer)
我有以下序列化程序:Django REST Framework通过PK以外的其他字段设置相关字段(不带NestedSerializer),django,django-rest-framework,Django,Django Rest Framework,我有以下序列化程序: class OrderSerializer(serializers.ModelSerializer): pair_name = serializers.ReadOnlyField(source='pair.name', read_only=False) deposit_address = NestedReadOnlyAddressSerializer(many=False, read_only=True) withdraw_address = Nes
class OrderSerializer(serializers.ModelSerializer):
pair_name = serializers.ReadOnlyField(source='pair.name', read_only=False)
deposit_address = NestedReadOnlyAddressSerializer(many=False, read_only=True)
withdraw_address = NestedAddressSerializer(many=False, read_only=False, partial=True)
pair.name
是唯一的字段
是否可以使用对名称允许PK分配(order.pair
)
[POST]
{'draw_address':'x',存款:'address':'y','pair_name':'ETHBTC'}
而不是:
[POST]
{'draw_address':'x',存款:'address':'y','pair':1}
我试着查看文档,但没有找到解决方案。
谷歌搜索了一个小时也没什么帮助
目前,
lookup\u field
只能设置在ViewSet
上,而不能设置在Serializer
上。首先,如果您希望能够接受字段的数据,我认为您不需要只写字段
要获得好的模式,请查看Django REST框架关于可写嵌套序列化程序的文档
基本上,您将覆盖序列化程序的
create()
和update()
方法来处理对值的适当设置。我阅读了这些文档,但似乎我需要做两件事之一:1。NestedSerializer(在我只需要一个字段的情况下,首选扁平而非嵌套)2。将该字段声明为只读,然后从请求正文的perform\u create
(hack)中查找该字段。有什么干净的方法吗?我明白你的意思了。我不认为嵌套关系是必要的——只是覆盖创建和更新文档在可写嵌套字段示例中演示的方式。然而,我认为使用SlugRelatedField可能更接近您的设想。