gpt4 book ai didi

django - 如何在 ModelViewSet 中获取由 super().create() 创建的模型?

转载 作者:行者123 更新时间:2023-12-03 23:28:18 27 4
gpt4 key购买 nike

我正在尝试获取由 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com