У мене є такий серіалізатор:
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()
методи належним чином обробляти встановлення значення пари.