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

时间:2015-02-20 12:31:36

标签: django django-forms django-views

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

相当明显的错误是:

  

"无法分配InMemoryUploadedFile:Resource.file必须是文件   实例"

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

1 个答案:

答案 0 :(得分:0)

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

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