python - Django REST框架在调用serializer.isValid()之前指定一些字段

标签 python django django-rest-framework

我需要设置一些字段(这些字段在请求中不会以 JSON 形式出现。如何使用 Django REST 框架执行此操作。

    serializer = GoalSerializer(data=request.DATA)
    serializer.status = 'I' ##IS THIS RIGHT????????????????
    serializer.journal = id

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我这样做是因为状态和日志(这是外键字段)是必需的。但总是得到400响应。这是设置这些字段的正确方法吗?

最佳答案

您想要访问:

serializer.object

这是您在调用时要保存到数据库的对象:

serializer.save()

因此,如果您在将模型对象保存到数据库之前在模型对象上设置额外的字段,那么您需要执行以下操作:

serializer.object.status = "I"
serializer.object.journal = id

关于python - Django REST框架在调用serializer.isValid()之前指定一些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085664/

相关文章:

python - 只训练一些词嵌入(Keras)

python - 使用python请求登录laravel app

javascript - 使用 javascript (jquery) 在 django 中重定向表单提交

django - DRF : callable in serializer choicefield "choices"

python - 在 Django Rest 框架分页中添加新值

python - 如何在 Python3 中找到给定排行榜的排名?

python - 根据输入的参数数量重复输出

django - 单独的服务器来服务 django 应用程序及其内容?

jquery - 如何将用户 ID 传递到 django ajax post 中?

python - 如何在 django-rest-framework 中为 API 使用 TokenAuthentication