Upload e Renomeação de Arquivos Django

O usuário está fazendo o upload de um arquivo .c de uma questão específica. Eu quero que o arquivo seja renomeado como ‘userid_questionid.c’

Meu models.py é:

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) 

Eu tentei isso. Mas apenas cria a pasta do usuário e salva o arquivo nela. Por favor ajude. Obrigado. Eu preciso que o arquivo seja renomeado.

Você só precisa alterar sua function content_file_name . A function abaixo criará caminhos como: uploads/42_100.c , em que 42 é o ID do usuário e 100 é o ID da pergunta.

 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)