Reputation: 6012
I'm using Django's Admin site to manage some data - but not building a webapp. I need the file upload field to store only the file name in the database.
Right now I can get absolute paths like: /Users/me/uploads/file.png
Or using the upload_to parameter get something like this in the database: uploads/file.png
How can I get it to be this: file.png
EDIT:
I'm taking the sqlite database and using in another client - so having any paths in the db entry doesn't make sense in my case.
Thanks!
Upvotes: 7
Views: 10721
Reputation: 43096
The upload_to
arg of the FileField
can be a callable. see the docs
If you really need to only store the file name, I think you can do something like this. I did'nt try myself but I think it works.
def only_filename(instance, filename):
return filename
class MyModel(models.Model):
file = models.FileField(upload_to=only_filename)
Upvotes: 4
Reputation: 43096
I would keep the FileField and use python os.path.basename to extract the filename.
This can be encapsulated with a property
class MyModel(models.Model):
file = models.FileField(...)
@property
def filename(self):
return os.path.basename(self.file.name)
Upvotes: 13