6

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

现在我可以获得绝对路径,例如:/Users/me/uploads/file.png

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

我怎样才能让它变成这样:file.png

编辑:

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

谢谢!

4

2 回答 2

11

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

这可以用一个属性封装

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

   @property
   def filename(self):
       return os.path.basename(self.file.name)
于 2013-04-04T19:06:18.857 回答
4

upload_toargFileField可以是可调用的。查看文档

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

def only_filename(instance, filename):
    return filename

class MyModel(models.Model):
    file = models.FileField(upload_to=only_filename)
于 2013-04-05T05:44:13.477 回答