内联表单集缺少文件字段值

时间:2020-06-23 05:29:23

标签: django django-templates inline-formset django-widget

我在使用django Inlineformsets时遇到问题。我有两个名为Projects和projectFiles的模型,Projects是父模型,而projectFiles是子模型。

models.py

class Projects(models.Model):
      project_name = models.CharField(max_length=100)

class projectFiles(models.Model):
      projectName = models.ForeignKey('Projects',on_delete=models.CASCADE)
      p_file      = models.FileField(upload_to='Files',null=True,blank=True)
      remark      = models.CharField(max_length=500,null=True,blank=True)

我的表单是下面的表单,

projectfilesFormSet = inlineformset_factory(Projects,projectFiles,fields=['p_file','remark'], extra=1,labels={'p_file':'File',},
    widgets = {
        'p_file' : forms.FileInput(attrs={'class':'form-control-file'}),
        'remark' : forms.TextInput(attrs={'class':'form-control'}),
    })

我的观点是下面的观点,

def fileUpload(request,pk):
    r_project = Projects.objects.get(pk=pk)
    if request.method == 'POST':
        formset = projectfilesFormSet(request.POST,request.FILES,instance=r_project)
        if formset.is_valid():
            formset.save()
            return redirect('projects:file_upload',pk=r_project.id)
    formset = projectfilesFormSet(instance=r_project)
    return render(request,'projects/files_upload.html',{'formset':formset})  

表单集保存数据,但是我无法看到 p_file 字段的保存值以及其他字段值。现在,如果我检查数据库,则该字段具有值。我无法以某种方式在模板中显示它。 我的模板是

    <form class="forms-sample" action="." method="POST" enctype="multipart/form-data">
                        {% csrf_token %}
                        {{ formset.management_form }}
                        {% for form in formset %}
                         {% for hidden in form.hidden_fields %}
                            {{ hidden }}
                        {% endfor %}
                        {% for field in form.visible_fields %}
                            <div class="row mt-3">
                                <div class="col-md-4">{{field.label_tag}}</div>
                                <div class="col-md-8">{{field}}</div>
                            </div>
                        {% endfor %}
                        <hr>
                        {% endfor %}
                <button type="submit" class="btn btn-primary mr-2">Save</button>                
    </form>

我的模板丢失了什么。

更新

问题似乎出在我的表单集小部件声明中。删除

'p_file' : forms.FileInput(attrs={'class':'form-control-file'}),
代码中的

似乎可以解决此问题。但是表格显然被弄乱了!

0 个答案:

没有答案