Django 将文件保存到不同的模型

Django saving file to different model

我有一个用于提交文件的简单表单,效果很好。我已经将文件从一个字段移出到它自己的 table 中,现在我真的很挣扎,因为我需要将文件添加到额外的 table 并以 table 的形式保存正确的外键=16=]。我在 save() 中尝试了各种片段,在视图中抓取文件并将文件添加为额外字段,但没有任何效果。

相当明显的错误是:

"Cannot assign InMemoryUploadedFile: Resource.file must be a File instance"

class File(models.Model):
    filename = models.CharField('Filename', max_length=200)
    file = models.FileField()
    mimetype = models.CharField('Mimetype', max_length=200)
    pub_date = models.DateTimeField('date published', auto_now_add=True, blank=True)

    def __str__(self):
        return self.filename

class Resource(models.Model):
    list_display = ('title', 'approved')

    def __str__(self):
       return str(self.title)

    title = models.CharField('Title', max_length=200)
    description = models.TextField('Description', null=True)
    file = models.ForeignKey(File)
    ... cut for brevity

class ResourceForm(forms.ModelForm):
    class Meta:
        model = Resource

问题是您将文件分配到外键字段。你需要先实例化File对象,然后设置到Resource对象。

file = File(filename="test", file=temp_data, mimetype='pdf')
file.save()
resource.file = file
resource.save()