我正在尝试获取由 super().create()
创建的模型的副本在我的 ModelViewSet 中 create()
方法。最简单的方法是什么?
我有一个 ModelViewSet,它采用通用 POST
请求,我知道这很好,因为我最终在我的数据库中创建了一个新记录。我想要做的是获取刚刚创建的对象,以便我可以返回它的 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})
与其他 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.
任何见解表示赞赏!
最佳答案
经过一些进一步的调试,我想通了。为了子孙后代,这是我的工作 create()
方法:
def create(self, request, *args, **kwargs):
response = super().create(request, *args, **kwargs)
instance = response.data
return Response({'status': 'success', 'pk': instance['pk']})
关于django - 如何在 ModelViewSet 中获取由 super().create() 创建的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349728/