python - 在保存之前编辑 django-rest-framework 序列化程序对象

标签 python django serialization django-rest-framework django-serializer

我想在保存之前编辑 django-rest-framwork 序列化程序对象。这就是我目前的做法 -

def upload(request):
    if request.method == 'POST':
        form = ImageForm(request.POST, request.FILES)
        if form.is_valid(): # All validation rules pass
             obj = form.save(commit=False)
             obj.user_id = 15
             obj.save()

如何使用 django-rest-framework 序列化器对象来做到这一点?

@api_view(['POST','GET'])
def upload_serializers(request):
    if request.method == 'POST':
         serializer = FilesSerializer(data=request.DATA, files=request.FILES)
         if serializer.is_valid():
              serializer.save()

最佳答案

现已针对 REST framework 3 进行编辑

现在使用 REST framework 3 的模式是:

if serializer.is_valid():
    serializer.save(user_id=15)

请注意,序列化程序现在不会将未保存的对象实例公开为 serializer.object,但是您可以检查原始验证数据作为 serializer.validated_data.

如果您使用通用 View 并且想要修改保存行为,您可以使用 perform_create 和/或 perform_update Hook ...

def perform_create(self, serializer):
    serializer.save(user_id=15)

关于python - 在保存之前编辑 django-rest-framework 序列化程序对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563020/

相关文章:

python - Numba 函数比 C++ 慢,循环重新排序进一步减慢 x10

python - 客户端连接和断开立即没有错误消息?

Python 路径作为字符串

python - django-admin 抛出语法错误 - 我认为是配置问题

c# - 反序列化为未知的派生类型

带有反斜杠的 Json 序列化数据

Python 多处理同步

python - 将表单数据保存到数据库并将其发送到API; Django

python - 使用字段排序 mptt 树

symfony - 在 Symfony2 中运行 PHPUnit 测试时,JMS Serializer 不读取配置