So che c'è un thread molto simile qui, ma non riesco a trovare la soluzione al mio problema.Rinominare i file in Django FileField
Ho bisogno di rinominare un file che è salvare nel Django models.FileField
Ho provato questo
os.rename(old_path, new_path)
mod.direct_file = File(open(new_path))
mod.save()
E questo
mod.direct_file.save(new_path, File(open(old_path)))
os.remove(old_path)
E molti altri modi, ma niente sembrava Aiuto. Un nuovo file viene creato in tutti i modi, tuttavia, i dati nel file non cambiano affatto.
EDIT: Risolto
os.rename(old_path, new_path)
cursor = connection.cursor()
cursor.execute("UPDATE mods_mod SET direct_file = %s WHERE id = %s", [new_name, mod.id])
transaction.commit_unless_managed()
metodo Open apre già il file assegnato. FieldFile non ha alcun metodo per aprire un altro file. – aemdy
Il file viene assegnato tramite FileField, corretto? Stai cercando di cambiare tutti i file nel tuo modello o una singola istanza del modello? – droxey
Mi piacerebbe rinominare il file 'direct_file = models.FileField (default = None, blank = True, null = True, upload_to =" mod_files ")' caricato in questo campo. – aemdy