1
我有兩個表格:相機&時間戳, 時間戳有一個cameraID的外鍵。 相機和時間戳都有一個'狀態'字段。 每個時間戳記條目都有一個攝像頭和一個當前狀態。 我想更新該攝像機的Timestamp.State時更新Camera.State值。在SQL中,我知道如何用數據庫觸發器做到這一點。但我不知道如何在Django中實現這一點Django版本的數據庫觸發器?
我有兩個表格:相機&時間戳, 時間戳有一個cameraID的外鍵。 相機和時間戳都有一個'狀態'字段。 每個時間戳記條目都有一個攝像頭和一個當前狀態。 我想更新該攝像機的Timestamp.State時更新Camera.State值。在SQL中,我知道如何用數據庫觸發器做到這一點。但我不知道如何在Django中實現這一點Django版本的數據庫觸發器?
有兩種選擇:使用Django signals或修改Timestamp.save()
以實現所需的行爲。
例子:
class Timestamp(models.Model):
...
def save(self, *args, **kwargs):
Camera.objects.filter(pk=self.camera_id).update(state=self.state)
super(Timestamp, self).save(*args, **kwargs)
我怎麼會寫單元測試的呢?我試過'camera1 = Camera.objects.create(name ='Camera1',url ='google.com',currentState = False) timestamp = TimeStamp.objects.create(camera = camera1,state = True) self.assertTrue(camera1.currentState)' – Sdude13
是的,我也會做這樣的事情。爲什麼它不工作? – Marat
我不確定。這些值在網站上正確更新。但是在運行測試時,測試失敗了「AssertionError:False is not true」 – Sdude13