我有以下序列化程序:
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]
{'withdraw_address': 'x', deposit: 'address': 'y', 'pair_name': 'ETHBTC'}
而不是:
[POST]
{'withdraw_address': 'x', deposit: 'address': 'y', 'pair': 1}
试图查看文档并没有找到解决方案。 谷歌搜索一小时也无济于事。
目前lookup_field
只能在ViewSet
上设置,而不能在Serializer
上设置。
答案 0 :(得分:2)
首先,如果您希望能够为其接受数据,我认为您不想要只写字段。
要了解一个好的模式,请查看Django REST Framework关于可写嵌套序列化程序的文档。 http://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers
您基本上会覆盖序列化程序的create()
和update()
方法,以便适当地设置配对值。