Python DRF添加非模型字段只是为了更新或创建模型实例
我现在和DRF有这个问题 我收到了模型未使用的额外字段。但这些值将定义模型中的字段Python DRF添加非模型字段只是为了更新或创建模型实例,python,django,django-rest-framework,Python,Django,Django Rest Framework,我现在和DRF有这个问题 我收到了模型未使用的额外字段。但这些值将定义模型中的字段 { "file_name": "test", "file_type": "jpg", "file": basex64 file, "url_img": null } 我买了这个模型 class imageModel(models.Model): id = models.AutoField
{
"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)
我所需要的就是解析文件名和文件类型来上传img,创建一个url\u img并上传到云上。有没有办法通过DRF做到这一点?正如穆罕默德所回答的,您为每个字段添加了一些序列化程序。MethodField()。还可以在元类中添加下一个方法
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
并在create/update方法上检索这些字段。DRF的方法是在serializer类中显式定义额外的字段
class ImageModelSerializer(serializers.ModelSerializer):
file_name = serializers.CharField(write_only=True)
file_type = serializers.CharField(write_only=True)
file = serializers.CharField(write_only=True)
class Meta:
model = ImageModel
fields = "__all__"
类ImageModelSerializer(serializers.ModelSerializer):
file\u name=serializers.CharField(write\u only=True)
file_type=serializers.CharField(write_only=True)
file=serializers.CharField(write_only=True)
类元:
模型=图像模型
fields=“\uuuu all\uuuuuu”
在这里,我使用了,因为所有这些数据都是字符串(如果不是,则相应地选择序列化器字段)
另外,设置将帮助我们从响应中省略这些字段。尝试使用serializer.MethodField是的,我得到了这些字段,但serializer不知何故给了我异常。您在模型中不使用ImageField而不是textfield有什么具体原因吗?
Serializers.MethodField()
?嗯。。。我在官方文件中没有看到任何相同的参考。你是说?