Javascript Can';t使用formset上载多个图像

Javascript Can';t使用formset上载多个图像,javascript,python,django,forms,formset,Javascript,Python,Django,Forms,Formset,我有django应用程序和多个图像上传问题。 一切正常,直到添加到Familymember模型字段image。 现在我无法为FamilyMember创建任何项目 请帮忙 这是我的模型: class Profile(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) created_date = models.Dat

我有django应用程序和多个图像上传问题。 一切正常,直到添加到Familymember模型字段
image
。 现在我无法为FamilyMember创建任何项目

请帮忙

这是我的模型:

class Profile(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    created_date = models.DateTimeField(default=timezone.now)

    def get_absolute_url(self):
        return reverse('profile-update', kwargs={'pk': self.pk})

    def __unicode__(self):
        return "%s %s" % (self.first_name, self.last_name)


class FamilyMember(models.Model):
    profile = models.ForeignKey(Profile)
    name = models.CharField(max_length=100)
    file = models.FileField(upload_to="localefile/")
    relationship = models.CharField(max_length=100)
以下是表格:

class ProfileForm(ModelForm):
    class Meta:
        model = Profile
        exclude = ()


class FamilyMemberForm(ModelForm):
    file = forms.FileField(widget=forms.FileInput(attrs={'multiple': True}))

    class Meta:
        model = FamilyMember
        exclude = ()


FamilyMemberFormSet = inlineformset_factory(Profile, FamilyMember,
                                            form=FamilyMemberForm, extra=1)
这里是我的观点,创建

class ProfileCreate(CreateView):
    model = Profile
    fields = ['first_name', 'last_name']


class ProfileFamilyMemberCreate(CreateView):
    model = Profile
    fields = ['first_name', 'last_name']
    success_url = reverse_lazy('profile-list')

    def get_context_data(self, **kwargs):
        data = super(ProfileFamilyMemberCreate, self).get_context_data(**kwargs)
        if self.request.POST:
            data['familymembers'] = FamilyMemberFormSet(self.request.POST)
        else:
            data['familymembers'] = FamilyMemberFormSet()
        return data

    def form_valid(self, form):
        context = self.get_context_data()
        familymembers = context['familymembers']
        with transaction.atomic():
            self.object = form.save()

            if familymembers.is_valid():
                familymembers.instance = self.object
                familymembers.save()
        return super(ProfileFamilyMemberCreate, self).form_valid(form)
我还使用JavaScript代码,来自:


$('.formset_行').formset({
addText:“添加家庭成员”,
deleteText:“删除”,
前缀:“家庭成员集”
});

上载文件时会通过request.FILES传递,因此您还必须将其传递给表单集,例如:

def get_context_data(self, **kwargs):
        data = super(ProfileFamilyMemberCreate, self).get_context_data(**kwargs)
        if self.request.POST:
            data['familymembers'] = FamilyMemberFormSet(
                data=self.request.POST,
                files=self.request.FILES
           )
        else:
            data['familymembers'] = FamilyMemberFormSet()
        return data
不要忘记在表单中添加enctype:

<form enctype="multipart/form-data" ...>


你试过了吗?@MHassan还没有,请告诉我因为主题很难,我能用这个工具用formset创建multiupload吗?这个包是用来上传多个文件的。就像您有一个文件字段,您可以在该文件字段中选择多个文件,保存表单后将保存所有选定的文件。很久以前我用它上传多个文件。
FamilyMember
file
属性保存一个文件,它将如何存储多个文件?您正在使用哪个数据库?
<form enctype="multipart/form-data" ...>