Cargar y renombrar archivos Django

El usuario está cargando un archivo .c de una pregunta en particular. Quiero que el archivo sea renombrado como ‘userid_questionid.c’

Mis modelos.py es:

from django.db import models class users(models.Model): username = models.CharField(max_length=20) password = models.CharField(max_length=20) score=models.IntegerField(max_length=3) def __unicode__(self): return self.username class questions(models.Model): question = models.TextField(max_length=2000) qid=models.IntegerField(max_length=2) def __unicode__(self): return self.qid def content_file_name(instance, filename): return '/'.join(['uploads', instance.questid.qid, filename]) class submission(models.Model): user = models.ForeignKey(users) questid = models.ForeignKey(questions) file = models.FileField(upload_to=content_file_name) 

Intenté esto. Pero solo crea la carpeta de usuario y guarda el archivo en ella. Por favor ayuda. Gracias. Necesito que el archivo sea renombrado.

Solo necesita cambiar su función content_file_name . La siguiente función creará rutas como las siguientes: uploads/42_100.c , donde 42 es el ID del usuario y 100 es el ID de la pregunta.

 import os def content_file_name(instance, filename): ext = filename.split('.')[-1] filename = "%s_%s.%s" % (instance.user.id, instance.questid.id, ext) return os.path.join('uploads', filename)