Как сообщить Django, когда вставлять или обновлять с переопределенным сохранением () - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу сделать какой-то фрагмент кода, когда моя модель вставляется и когда он обновляет другой фрагмент кода. У меня есть эта модель с переопределенным методом save (). Идея состоит в том, чтобы выполнить этот код только для вставки. Как я могу сказать django когда вставлять, когда обновлять и какой код выполнять для каждого?

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)   
def save( self, force_insert=False, force_update=False, *args, **kwargs):
    super( Galeria, self ).save( *args, **kwargs )

    ruta = self.ruta
    if ruta:
        oldfile = self.ruta.name
        dot = oldfile.rfind( '.' )
        newfile = str( self.pk ) + oldfile[dot:]

        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 )
                self.ruta.name = "imagenes/" + str(timezone.now().strftime("%Y/%m/")) + str(newfile)
            elif newfile.endswith(".mp4"):
                self.ruta.storage.save( "videos/" + str(timezone.now().strftime("%Y/%m/")) + str(newfile), ruta )
                self.ruta.name = "videos/" + str(timezone.now().strftime("%Y/%m/")) + str(newfile)
            else:
                self.ruta.storage.save( newfile, ruta )
                self.ruta.name = newfile 
                self.ruta.close()
                self.ruta.storage.delete( oldfile )

    super( Galeria, self ).save( *args, **kwargs )

1 Ответ

0 голосов
/ 08 апреля 2020

Используйте django post_save сигнал для этой модели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...