我讀了關於django信號(http://docs.djangoproject.com/en/dev/topics/signals/),但據我所知,信號從未轉換爲文字SQL觸發器(http://en.wikipedia.org/wiki/Database_trigger)。django-signals vs觸發器?
如果我是正確的信號和觸發器是不同的,那哪一個更好,以什麼方式?最佳做法是什麼?
....................
這裏有一個具體的例子,如果你想要一個:
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')
我想一個人要當且僅當該人的位置在該球隊的一組位置內時才能加入球隊。我不知道如何做到這一點與正常的關係約束,所以據我所知,我不得不使用觸發器或信號。我的直覺說我應該使用觸發器,但我想知道最佳實踐。
+1:這和簡單的覆蓋,以'模型save'涵蓋我一生中遇到的所有基地。 – 2010-08-21 22:58:41
+1。如果您正在加載觸發信號的燈具,信號通常會減慢測試速度。在測試和之後的連接之前,通過「斷開連接」來解決是一件很痛苦的事情。 – 2010-08-22 06:45:03
我有兩個目標: 1)使網站做我想要的(驗證) 2)當我* *犯錯時抓住我。 就#1而言,這個建議很有意義。 就#2而言,如果我不使用ModelForm與數據庫進行交互,該怎麼辦?該文檔中提到「請注意,保存模型時驗證器不會自動運行」。這意味着我現在可能會意外丟失數據完整性,因爲在修改數據塊之前我沒有通過調用Person.save()來調用驗證器。 但是對於觸發器,觸發器不可能被錯誤地繞過。 我的推理是否有意義? – 2010-08-24 21:14:04