/ / Django REST Framework встановлює пов'язане поле іншим полем, ніж PK (без NestedSerializer) - django, django-rest-Framework

Django REST Framework встановлює відповідне поле іншим полем, ніж PK (без NestedSerializer) - 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 це унікальне поле.

Чи можна дозволити призначення ПК (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.

Відповіді:

2 для відповіді № 1

По-перше, я не думаю, що вам потрібно поле лише для запису, якщо ви бажаєте приймати дані.

Для гарного шаблону, який слід дотримуватися, подивіться документацію Django REST Framework щодо записуваних вкладених серіалізаторів. http://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers

Ви в основному перезаписаєте серіалізатор "s create() і update() методи належним чином обробляти встановлення значення пари.