Django REST Framework通过另一个字段设置相关字段而不是PK(没有NestedSerializer)

时间:2017-08-16 18:40:27

标签: 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 = 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上设置。

1 个答案:

答案 0 :(得分:2)

首先,如果您希望能够为其接受数据,我认为您不想要只写字段。

要了解一个好的模式,请查看Django REST Framework关于可写嵌套序列化程序的文档。 http://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers

您基本上会覆盖序列化程序的create()update()方法,以便适当地设置配对值。