Javascript 使用ImageField在Ajax中序列化(表单)

Javascript 使用ImageField在Ajax中序列化(表单),javascript,ajax,django,django-rest-framework,Javascript,Ajax,Django,Django Rest Framework,我的模型中有一个名为Post的forms.ImageField。当我创建它的一个实例时,我通过Ajax来实现,同时使用data=$(this).serialize()将序列化数据发布到我的PostCreateAPIView,这是Django REST Framework的一个通用API CreateView,但此方法只序列化数据,而忽略我的映像 这是我的密码: 我的CreateAPIView: class PostCreateAPIView(generics.CreateAPIView):

我的模型中有一个名为
Post
forms.ImageField
。当我创建它的一个实例时,我通过Ajax来实现,同时使用
data=$(this).serialize()
将序列化数据发布到我的
PostCreateAPIView
,这是Django REST Framework的一个通用API CreateView,但此方法只序列化数据,而忽略我的映像

这是我的密码:

我的CreateAPIView:

class PostCreateAPIView(generics.CreateAPIView):
    serializer_class    = PostModelCreateSerializer     
    permission_classes  = [permissions.IsAuthenticated] 
    def perform_create(self, serializer):               
        print(self)
        serializer.save(user = self.request.user)
我的表格:

class PostModelCreateForm(forms.ModelForm):

    content = forms.CharField(
                    label="",
                    help_text="",#text to help
                    widget=forms.Textarea( attrs={
                    'cols'          : "50", #size
                    'rows'          : "6", #size
                    'placeholder'   : 'Votre publication', 
                    'style'         : 'resize : none' 
                    }))

    group = forms.ChoiceField(choices=USER_GROUPS, label='')

    class Meta:
        model   = Post #we define the model
        fields  = [
        "content",
        "group",
        "photo"
        ]
$(document.body).on(“提交”、“发布表单”类),函数(事件){
event.preventDefault();
这个uu=$(这个);
var formData=this.serialize();
$.ajax({
方法:“张贴”,
url:createpostrl,
数据:formData,
成功:功能(数据){
},
错误:函数(数据){
}
});
});

集团*新商业区司法区和新商业区 照片
多亏了卢卡,以下是答案:

$(document.body).on("submit", ".post_form_class",function(event){
    event.preventDefault();

    var formData  = new FormData(this);
    $.ajax({
        method   : "POST",
        url      : createPostUrl,
        data     : formData,
        processData:false,
        contentType:false,
        success  : function(data){
        location.reload(true); 
        },
        error    : function(data){
            console.log("ERROR:CH0x2 while fetching after creation form submit");
            console.log("data :",data.status, data.statusText);
        }
    });

 });

如果您想使用FormData API,请将其与HtmleElements一起使用,而不是与jQuery elementsSir一起使用,如果
这不是HtmleElement它是什么?当我
console.log(this)
我得到一个HTML元素否,你不会
this.get(0)
是一个HTMLElement,
this
正如我所写的,是一个jQuery元素try FormData(this)。也就是说。。。如果您不发送文件,则
serialize()
将生成相同的表单编码数据。您的解决方案给出了此错误>类型错误:对未实现接口FormData的对象调用了“append”