Mysql
 sql >> Database >  >> RDS >> Mysql

Codice Django o trigger MySQL

Ci sono molti modi per risolvere il problema che hai descritto:

  • Logica dell'applicazione
    • Logica specifica della vista -- Se il comportamento è specifico di una singola vista, inserisci le modifiche nella vista.
    • Logica specifica del modello -- Se il comportamento è specifico di un singolo modello, sostituisci il metodo save() per il modello.
  • Logica del middleware -- Se il comportamento si riferisce a più modelli OPPURE deve essere avvolto attorno a un'applicazione esistente, puoi utilizzare Segnali pre-salvataggio/post-salvataggio per aggiungere ulteriori comportamenti senza modificare l'applicazione stessa.
  • Procedure archiviate nel database -- Normalmente una possibilità, ma l'ORM di Django non li usa. Non portabile tra database.
  • Trigger del database -- Non trasferibile da un database all'altro (o anche da una versione di un database a quella successiva), ma consente di controllare il comportamento condiviso su più applicazioni (possibilmente non Django).

Personalmente, preferisco usare l'override del metodo save() o usare un segnale Django. L'uso della logica specifica della vista può farti notare su applicazioni di grandi dimensioni con più viste degli stessi modelli.