mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Fix the pre_save
removal.
This commit is contained in:
parent
b8af83493f
commit
4d1ab3204a
|
@ -44,8 +44,8 @@ Next we're going to replace the `SnippetList`, `SnippetDetail` and `SnippetHighl
|
|||
snippet = self.get_object()
|
||||
return Response(snippet.highlighted)
|
||||
|
||||
def pre_save(self, obj):
|
||||
obj.owner = self.request.user
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(owner=self.request.user)
|
||||
|
||||
This time we've used the `ModelViewSet` class in order to get the complete set of default read and write operations.
|
||||
|
||||
|
@ -53,6 +53,20 @@ Notice that we've also used the `@detail_route` decorator to create a custom act
|
|||
|
||||
Custom actions which use the `@detail_route` decorator will respond to `GET` requests. We can use the `methods` argument if we wanted an action that responded to `POST` requests.
|
||||
|
||||
Also note that we are setting the `owner` as the `request.user`. However, to make this work, we need to customize the associated serializer:
|
||||
|
||||
class SnippetSerializer(serializers.HyperlinkedModelSerializer):
|
||||
owner = serializers.ReadOnlyField(source='owner.username')
|
||||
highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html')
|
||||
|
||||
class Meta:
|
||||
model = Snippet
|
||||
fields = ('url', 'highlight', 'owner',
|
||||
'title', 'code', 'linenos', 'language', 'style')
|
||||
|
||||
def create(self, validated_data):
|
||||
return Snippet.objects.create(**validated_data)
|
||||
|
||||
## Binding ViewSets to URLs explicitly
|
||||
|
||||
The handler methods only get bound to the actions when we define the URLConf.
|
||||
|
|
Loading…
Reference in New Issue
Block a user