Python 3.x 如何在Django中从表单上载文件

Python 3.x 如何在Django中从表单上载文件,python-3.x,django,Python 3.x,Django,我想从表单上传一个文件到S3位置。我用的是Python3和django 这就是我的模型中的内容: class MediaSubtitle(models.Model): media = models.ForeignKey( "Media", related_name='%(app_label)s_%(class)s_media', verbose_name="Media") language = models.CharField(

我想从表单上传一个文件到S3位置。我用的是Python3和django

这就是我的模型中的内容:

class MediaSubtitle(models.Model):
 media = models.ForeignKey(
    "Media",
    related_name='%(app_label)s_%(class)s_media',
    verbose_name="Media")
 language = models.CharField(
    max_length=255,
    db_index=True,
    verbose_name="Taal",
    blank=False,
    null=False)
 source = models.FileField(
    upload_to='subtitles/%Y/%m/%d',
    blank=True,
    validators=[FileExtensionValidator(allowed_extensions=['srt', 'sub'])])

 def __str__(self):
    return "%s" % (self.media,)

 class Meta:
    verbose_name = "Media Ondertitel"
    verbose_name_plural = "Media Ondertitels"
这就是我在表单中使用的内容。py:

class AddSubtitleForm(forms.ModelForm):

 def __init__(self, parent, **kwargs):
    super().__init__(**kwargs)
    self.parent = parent
    self.fields["language"].required = True
    self.fields["source"].required = False

 def save(self):
     result = MediaSubtitle(
        language=self.cleaned_data["language"],
        source=self.data["source"],
        media=self.parent)
    
     return result.save()

 class Meta:
    model = MediaSubtitle
    fields = ("language", "source")

如何确保在执行保存时上传文件?

您可以通过将boto3库(amazons SDK for python)与django存储结合使用来实现这一点。请查看本教程: