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

标签 django django-rest-framework

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

相关文章:

python - Gunicorn 导入错误 : No module name myApp

python - 在 django-rest-framework-jwt 中存储超过默认信息

django Rest框架使用ModelSerializer和ModelViewSet返回自定义对象

javascript - 用户序列化程序在 AJAX 获取中显示 null,但在 DRF 中显示数据

python - Django Rest Framework 自定义序列化器方法

python - 使用 Rest-Framework-Jwt 创建 token

python - 寻找对象之间的第 n 级联系

python - 运行 WSGI 应用程序时出错,ModuleNotFoundError : No module named 'mysite'

linux - tail 文件 - 该文件变得不可访问然后又出现了

python - Django:TypeError:必须是字符串,而不是 datetime.date