我正在尝试获取super().create()在我的 ModelViewSetcreate()方法中创建的模型的副本。最简单的方法是什么?
我有一个接受通用POST请求的 ModelViewSet,我知道这很好,因为我最终在我的数据库中得到了一条新记录。我想要做的是获取刚刚创建的对象,以便我可以将其返回pk给客户端。但是,以下操作不起作用:
class ItemViewSet(viewsets.ModelViewSet):
model = Item
# ...
def create(self, request, *args, **kwargs):
super().create(request, *args, **kwargs) # Successfully creates instance
instance = self.get_object() # Throws error
return Response({'status': 'success', 'pk': instance.pk})
Run Code Online (Sandbox Code Playgroud)
与其他 DRF ModelViewSet 方法一样,我希望self.get_object()让我创建实例,尽管这通常只能在“详细路线”中使用。我得到的是以下错误:
AssertionError: Expected view CultivarStockViewSet to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
任何见解表示赞赏!