Ho avuto esattamente lo stesso problema! poi mi rendo conto che i miei modelli lo stavano causando. esempio ho hade miei modelli come questo:
class Tile(models.Model):
image = models.ImageField()
Poi, ho voluto avere più l'una piastrella riferimento lo stesso file nel disco! Il modo che ho trovato per risolvere questo era cambiare la mia struttura di modello a questo:
class Tile(models.Model):
image = models.ForeignKey(TileImage)
class TileImage(models.Model):
image = models.ImageField()
Che dopo mi rendo conto che più senso, perché se voglio lo stesso file viene salvato più di uno nella mia DB devo crea un altro tavolo per questo!
Immagino che tu possa risolvere il tuo problema in questo modo, sperando che tu possa cambiare i modelli!
EDIT
Inoltre Credo che si può utilizzare uno storage diversa, in questo modo, per esempio: SymlinkOrCopyStorage
http://code.welldev.org/django-storages/src/11bef0c2a410/storages/backends/symlinkorcopy.py
fonte
2011-11-30 20:51:30
sicuro che si può ottenere quello che vuoi senza modificare Django o sottoclasse 'FileField'. Ogni volta che un 'FileField' viene salvato, viene creata una nuova copia del file. Sarebbe abbastanza semplice aggiungere un'opzione per evitare questo. –
beh, sì, sembra che devo sottoclasse e aggiungere un param. Non desidero creare tabelle aggiuntive per questa semplice attività – Guard
Metti il file in una posizione diversa, crea il tuo campo con questo percorso, salvalo e poi hai il file nella destinazione upload_to. – benjaoming