Skip to content

Commit f456b99

Browse files
authored
details about primary key read serializer helper
1 parent 7bf0d93 commit f456b99

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,39 @@ $ docker build -t django-ckc . && docker run django-ckc pytest
4646
Make your models have a `deleted` bool set when they are deleted instead of actuallying
4747
being deleted. Uses a model manager `SoftDeleteModelManager` to keep them hidden.
4848

49+
#### `PrimaryKeyWriteSerializerReadField`
50+
51+
A DRF field for writing via PK and reading via a serializer. Useful for when you want to
52+
connect 2 models together and immediately display to the user some useful information.
53+
54+
For example, if you had an `Order` model with `LineItem` objects pointing to it, it may be
55+
useful to create a new line item via order PK and return back the complete order with
56+
new totals and other calculations:
57+
58+
```py
59+
class LineItemUpdateSerializer(serializers.ModelSerializer):
60+
order = PrimaryKeyWriteSerializerReadField(
61+
queryset=Order.objects.all(),
62+
read_serializer=OrderDetailSerializer
63+
)
64+
65+
class Meta:
66+
model = LineItem
67+
fields = ["id", "order", "product"]
68+
```
69+
70+
`POST` data for adding product #123 to order #5 would look like
71+
72+
```js
73+
// REQUEST
74+
{"order": 5, "product": 123}"}
75+
76+
// RESPONSE
77+
{"order": {"total_amount": "$1,000.00"}, "product": 123}
78+
```
79+
80+
81+
4982
#### `DefaultUserCreateMixin` for `ModelSerializers`
5083
5184
This will automatically set `YourModel.created_by` to `request.user`. To override which

0 commit comments

Comments
 (0)