The answer of Ismail Badawi is completely correct. You can also use the new string formatting and the lambda function.
New line formatting:
def upload_to(instance, filename): return 'images/{username}/{filename}'.format( username=instance.user.user.username, filename=filename) class Avatar(models.Model): avatar = models.ImageField(upload_to=upload_to) user = models.ForeignKey(UserProfile)
Newline formatting and lambda function:
path = lambda instance, filename: 'images/{username}/{filename}'.format( username=instance.user.user.username, filename=filename) class Avatar(models.Model): avatar = models.ImageField(upload_to=path) user = models.ForeignKey(UserProfile)
Mohammad reza
source share