У меня есть эта модель:
class Galeria(models.Model):
galeriaid = models.AutoField(db_column='GaleriaID', primary_key=True)
nombre = models.CharField(db_column='Nombre', max_length=128, blank=True, null=True)
ruta = models.FileField(db_column='Ruta', max_length=512, blank=True, null=True)
И я переопределил save () , чтобы мой файл выглядел как {pk} .jpg или {рк} .mp4 . Код работает, но не обновляет file.path и file.url. Я получаю "media / {file}" вместо "media / imagenes /% Y% m / {file}". Что я делаю не так, код save () ниже:
def save( self, force_insert=False, force_update=False, *args, **kwargs):
# Call save for post id
super( Galeria, self ).save( *args, **kwargs )
ruta = self.ruta
if ruta:
# Create new file using pk and ext file
oldfile = self.ruta.name
dot = oldfile.rfind( '.' )
newfile = str( self.pk ) + oldfile[dot:]
# Create new file and remove the old one
if newfile != oldfile:
self.ruta.storage.delete( newfile )
if newfile.endswith(".jpg"):
self.ruta.storage.save( "imagenes/" + str(timezone.now().strftime("%Y/%m/")) + str(newfile), ruta )
elif newfile.endswith(".mp4"):
self.ruta.storage.save( "videos/" + str(timezone.now().strftime("%Y/%m/")) + str(newfile), ruta )
else:
self.ruta.storage.save( newfile, ruta )
self.ruta.name = newfile
self.ruta.close()
self.ruta.storage.delete( oldfile )
# keep the changes
super( Galeria, self ).save( *args, **kwargs )
Я пытался добавить функцию для загрузки, но все равно не работает.