Ho letto dei segnali di django (http://docs.djangoproject.com/en/dev/topics/signals/), ma per quanto ho capito, i segnali non vengono mai convertiti in trigger SQL letterali (http://en.wikipedia.org/wiki/Database_trigger).segnali django e trigger?
Se sono corretto che segnali e trigger siano diversi, quale è il migliore e in che modo? Qual è la migliore pratica?
....................
Ecco un esempio concreto se volete uno:
class Location(models.Model):
name = models.CharField(max_length=30)
class Person(models.Model):
location = models.ForeignKey('Location')
class Team(models.Model):
locations = models.ManyToManyField('Location')
voglio una persona di essere in grado di unirsi a una squadra se e solo se la posizione di quella persona rientra nella serie di posizioni di quella squadra. Non so come farlo con i normali vincoli relazionali, quindi per quanto ne so sono costretto a usare trigger o segnali. Il mio istinto dice che dovrei usare i grilletti, ma voglio conoscere le migliori pratiche.
+1: Che e una semplice sostituzione a 'save' nel modello copre tutte le basi che abbia mai incontrato. –
+1. I segnali di solito rallentano i test se si caricano proiettori che attivano i segnali. È un problema aggirare il fatto di "disconnettere" prima dei test e "connettersi" in seguito. –
Ho due obiettivi: 1) fare in modo che il sito faccia quello che voglio (convalidare) 2) prendermi quando * I * commettere un errore. In termini di # 1, questo suggerimento ha senso. In termini di # 2, cosa succede se non utilizzo un ModelForm per interagire con il DB? la documentazione dice "Nota che i validatori non verranno eseguiti automaticamente quando salvi un modello". Ciò significa che ora posso perdere accidentalmente l'integrità dei dati poiché non ho richiamato un validatore chiamando 'Person.save()' prima di modificare il DB. Ma con i trigger, è impossibile che il trigger venga erroneamente aggirato. Il mio ragionamento ha senso? –