首页 > 解决方案 > DRF 添加非模型字段只是为了更新或创建模型实例

问题描述

我目前对 DRF 有这个问题。

我收到了模型未使用的额外字段。但是这些值将定义模型中的字段。

{
"file_name": "test",
"file_type": "jpg",
"file": basex64 file,
"url_img": null
}

我得到了这个模型

class imageModel(models.Model):
   id = models.AutoField(primary_key=True)
   url_img = models.textField(null=False)

我只需要解析 file_name 和 file_type 以上传 img 以创建 url_img 并将其上传到云端。有没有办法通过 DRF 做到这一点?

标签: pythondjangodjango-rest-framework

解决方案


正如穆罕默德回答的那样,您为每个字段添加了一些 Serializers.MethodField() 。您还可以在 Meta 类中添加下一个方法

def to_internal_value(self, data):
        internal_value = super(ImageSerializer, self).to_internal_value(data)
        file_name = data.get("file_name")
        file = data.get("file")
        file_type= data.get("file_type")
        internal_value.update({
            "file_name": file_name,
            "file": file,
            "content_type": content_type
        })
        return internal_value

并在创建/更新方法上检索这些字段


推荐阅读