Py学习  »  Django

Django循环保存所有现有记录,但只保存一条记录

kaito • 5 年前 • 2113 次点击  

这是我的html代码

<tr>
    <td colspan="2" style="text-align: center;">
        <h2 style="font-weight: bold;">Required Documents:</h2>
    </td>
</tr>
{% for d in doc %}
<tr>
    <td style="text-align: left;">
        <input type="file" name="myfile-{{d.id}}" value="{{d.id}}" style="outline: none;" required/>
        {{d.id}}{{d.Description}}
    </td>
    <td></td>
</tr> 
{% endfor %}

视图.py

def enrollmentform(request):
    id = request.GET.get('StudentID')
    students = StudentProfile.objects.all().filter(id=id)
    doc = DocumentRequirement.objects.all().filter()
    return render(request, 'accounts/EnrollmentForm.html',
                  {"doc": doc})

这是我保存记录的逻辑

myfile = request.FILES['myfile-6']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
uploaded_file_url = fs.url(filename)
V_insert_data = StudentsEnrollmentRecord(
    Student_Users=studentname, Payment_Type=payment,
    Education_Levels=educationlevel, School_Year=schoolyear
)
insert_doc = StudentsSubmittedDocument(
    Students_Enrollment_Records =  V_insert_data,
    Document = myfile
)
insert_doc.save()

我不知道怎么循环这个 myfile=request.FILES['myfile-6'] 使用现有的表文档ID。帮帮我,伙计们,我在这个问题上耽搁了三天

例如,如果学生遵守4个要求的文件,它将保存如下

correct

在我看来,它只保存了一条记录,

wrong saving

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49153
 
2113 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Iain Shelvington
Reply   •   1 楼
Iain Shelvington    5 年前

您可以有许多同名的输入,这可以重复

<input type="file" name="myfile">

在您的视图中,可以使用 getlist

files = request.FILES.getlist('myfile')

然后循环查看视图中的文件

V_insert_data = StudentsEnrollmentRecord(
    Student_Users=studentname,
    Payment_Type=payment,
    Education_Levels=educationlevel,
    School_Year=schoolyear
)
for file in request.FILES.getlist('myfile'):
    StudentsSubmittedDocument.objects.create(
        Students_Enrollment_Records=V_insert_data,
        Document=file
    )