Django models.FileField - 只存储文件名而不是任何路径或文件夹引用

gng*_*zrd 6 python django filefield

我正在使用Django的管理站点来管理一些数据 - 但是没有构建webapp.我需要文件上传字段来仅存储数据库中的文件名.

现在我可以得到像/Users/me/uploads/file.png这样的绝对路径

或者使用upload_to参数在数据库中获取类似内容:uploads/file.png

我怎么能得到它:file.png

编辑:

我正在使用sqlite数据库并在另一个客户端中使用 - 因此在我的情况下,db条目中的任何路径都没有意义.

谢谢!

luc*_*luc 11

我会保留FileField并使用python os.path.basename来提取文件名.

这可以用属性封装

class MyModel(models.Model):
   file = models.FileField(...)

   @property
   def filename(self):
       return os.path.basename(self.file.name)
Run Code Online (Sandbox Code Playgroud)


luc*_*luc 4

upload_to的 arg可以FileField是可调用的。请参阅文档

如果你真的只需要存储文件名,我认为你可以这样做。我自己没有尝试过,但我认为它有效。

def only_filename(instance, filename):
    return filename

class MyModel(models.Model):
    file = models.FileField(upload_to=only_filename)
Run Code Online (Sandbox Code Playgroud)