在Django中获取一个模型实例的FileField的绝对文件路径

36

我有一个页面,人们可以将文件上传到我的服务器。

我想在Celery中对文件进行操作。因此,我需要知道我模型的FileFiled上传的文件的绝对文件路径。

假设我查询了模型并获得了实例。 现在我需要获取包括文件路径在内的绝对文件路径。

obj = Audio.objects.get(pk=1)

我目前正在尝试obj.filename,但它只打印文件名而不是绝对路径。

我知道我可以获取到upload_to和媒体目录中的上传路径,但我想知道是否有更DRY和自动化的方法。

如何获取obj中的file(一个文件字段)的absolute path

1个回答

73

找到了答案。

我需要在FileField上执行.path操作。

如果我这样做:

obj.audio_file.path 

obj 是我查询的模型实例,audio_file 是文件字段。


1
你能提供官方文档链接吗? - decadenza
2
@decadenza,请在此处检查FileField类的deconstruct方法,链接为https://docs.djangoproject.com/en/2.2/_modules/django/db/models/fields/files/#FileField。 - Ivan Podhornyi
3
也许这会有所帮助:https://docs.djangoproject.com/en/3.0/topics/files/#using-files-in-models。 - ruddra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接