ImageField如果上传同一名字图片时,会默认用下划线命名新加图片,而不是替换的解决方案。
class OverwriteStorage(FileSystemStorage):
'''
Muda o comportamento padrão do Django e o faz sobrescrever arquivos de
mesmo nome que foram carregados pelo usuário ao invés de renomeá-los.
'''
def get_available_name(self, name):
if self.exists(name):
os.remove(os.path.join(settings.MEDIA_ROOT, name))
return name
class Media(models.Model):
name = models.CharField(u"Nome", max_length=128))
media = models.FileField(upload_to=settings.MEDIA_DIR, storage=OverwriteStorage())