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可能更接近您的设想。