Menu Close

How to with upload_to determined at runtime with a Python Django FileField?

To with upload_to determined at runtime with a Python Django FileField, we can set the upload_to path dynamically in a FileField.

For instance, we write

def content_file_name(instance, filename):
    return '/'.join(['content', instance.user.username, filename])

class Content(models.Model):
    name = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    file = models.FileField(upload_to=content_file_name)

to create the content_file_name function to compute the path of the file path to save to return it.

And then we create the file FileField in the Content model by setting the upload_to argument to the content_file_name function so that it’s run at runtime to determine the upload path.

Posted in Python, Python Answers