一次上传多个文件,使用不同的类别集 - Django表单

时间:2017-04-29 16:28:22

标签: django file-upload django-forms multiple-file-upload

我有一个表格,必须通过Django ModelForm一次上传多个文件。

场景就像,我有一个表格,其中必须附加不同类别的文件。例如,可能有医疗记录,医生转诊,诊断报告等。这些类别中的每一个都存储在DB中。我必须通过单一表格提交,根据各自的类别上传所有这些文件。

这是我的Django模型。

class Patient(models.Model):
    first_name = models.CharField(_("First Name"), max_length=30)
    last_name = models.CharField(_("Last Name"), max_length=30)
    email = models.EmailField(max_length=255)

class DocumentType(models.Model):
    """
    Type of document to be attached alongside a Patient.
    """
    name = models.CharField(max_length=255)

class DocumentFile(BaseModel):
    """
    Documents to be attached alongside each document type within a 
    Patient Case. Multiple documents to be attached.
    """
    type = models.ForeignKey(DocumentType)
    attachment = models.FileField(upload_to=get_new_documents_path, blank=True)
    patient = models.ForeignKey(Patient, related_name="get_applicable_documents")

请告诉我处理表单提交的最佳方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我一直在研究Django项目,还必须提交包含文件上传的表单。我不知道你是如何与用户进行互动的,但我可以解释一下我的情况并希望它有所帮助并且与你的用户有一定的相关性。

在我的情况下,我使用FormData接口(“multipart”)通过Web提交表单,对服务器执行POST。我的表单有时只包含简单字段,其他时候可能包含各种文件上载。您可以使用FormData接口并将多个字段附加到对象,然后通过POSTing将其发送到Django Server。就我而言,我也是异步使用它与JQuery AJAX,虽然这不是一个要求。

您可以找到此at W3Schools的基本构思,您可以尝试一些javascript示例here。此外,如果您有任何异步约束,AJAX,那么有一个很好的起点here on Stack Overflow

祝你好运