【发布时间】:2025-12-26 23:25:12
【问题描述】:
我需要保存文件,不是来自 request.FILES,而是来自另一个保存的记录。
这是模型记录的代码:
class Foo(models.Model)
slug = models.SlugField()
class FooFile(models.Model):
name = models.CharField(max_length=100)
file = models.FileField(upload_to='foo_folder')
foo = models.ForeignKey(Foo, related_name='files')
class RealRecord(models.Model):
slug = models.SlugField()
awesome_file=models.FileField(upload_to='awesome')
mediocre_file=models.FileField(upload_to='mediocre')
还有视图(在本例中MyForm 是保存到 RealRecord 的模型表单):
def example(request, record=1, template_name="form.html")
foo_obj = Foo.objects.get(pk=record)
SAVED_FILES = {}
for file in foo_obj.files.all():
SAVED_FILES[file.name]=file.file
if request.method == 'POST':
form = MyForm(data=request.POST, files=SAVED_FILES)
if form.is_valid():
form.save()
# rest of view
else:
form = MyForm()
return render(request, template_name, locals())
所以事情基本上是FieldFile 被用作UploadedFile 对象。
每个Foo 将有一个名为awesome_file 的FooFile 记录和另一个名为mediocre_file 的记录,与RealRecord 中的必填字段相匹配。
疯狂的是,这完全验证了。 然而,问题在于,在创建的结果记录中,awesome_file 和 mediocre_file 的路径都在“foo_folder”中。但我不希望“foo_folder”中的文件,我希望它们位于我为RealRecord 中的每个字段指定的路径中。
所以我想我想知道我可以对来自 FooField 的 FieldFile 值做些什么,以便它们的行为类似于传统的 UploadedFile 并获取各自字段的 upload_to 和 path 值。
【问题讨论】:
标签: django file-upload filefield django-file-upload