微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Django 外键创建多文件上传器

如何解决使用 Django 外键创建多文件上传器

我正在尝试创建一个 JobRequestFile 表单,您可以在其中将涉及外键的多个文件上传到我的 JobRequest 模型。但是,在尝试保存时,它会将我带到我的 JobRequest 表单并说这些字段是必需的。

我的表格:

    class Meta:
        model = JobRequestFile
        fields = [
            'file'
        ]
        widgets = {
            'file': ClearableFileInput(attrs={'multiple': True}),} 

我的观点:

class FileUpload(FormView):
    form_class = JobRequestFileForm
    template_name = 'jobrequest/upload.html'  # Replace with your template.
    success_url = 'loggedIn'

    def post(self,request,*args,**kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist('file')
        if form.is_valid():
            most_recent_jr = JobRequest.get.latest('requestDate')
            for f in files:
                JobRequestFile.object.create(jobRequest=most_recent_jr,file=f)
            return self.form_valid(form)
        else:
            return self.form_invalid(form) 

我的模板:

<form action='.' method='POST' enctype='multipart/form-data'>
      {% csrf_token %}
      {{ form.as_p }}
      <input type='submit' value='Save' />
</form>

两种模型:

class JobRequest(models.Model):
    customer = models.ForeignKey('account.Customer',on_delete=models.CASCADE)
    partnerTypeNeeded = models.CharField('PartnerTypeNeeded',max_length=30,choices=PartnerMore.PartnerTypes.choices)
    issueDescription = models.TextField(blank=True)
    communa = models.CharField(unique=False,default='0')
    serviceDate = models.DateTimeField()
    requestDate = models.DateTimeField(auto_Now_add=True,null=False,blank=False)
    budget = models.FileField(upload_to='budget/%Y/%m/',null=True,blank=True)
    jobCompleted = models.BooleanField(default=False)
    partner = models.ForeignKey('account.Partner',on_delete=models.SET_NULL,blank=True,related_name='assignedPartner')
    suggestedPartner = models.ForeignKey('account.Partner',related_name='suggestion')

class JobRequestFile(models.Model):
    jobRequest = models.ForeignKey('JobRequest',on_delete=models.CASCADE)
    file = models.FileField(upload_to='files/%Y/%m/')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。