2017-02-19 63 views
1

我有两个表格:相机&时间戳, 时间戳有一个cameraID的外键。 相机和时间戳都有一个'状态'字段。 每个时间戳记条目都有一个摄像头和一个当前状态。 我想更新该摄像机的Timestamp.State时更新Camera.State值。在SQL中,我知道如何用数据库触发器做到这一点。但我不知道如何在Django中实现这一点Django版本的数据库触发器?

回答

1

有两种选择:使用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) 
+0

我怎么会写单元测试的呢?我试过'camera1 = Camera.objects.create(name ='Camera1',url ='google.com',currentState = False) timestamp = TimeStamp.objects.create(camera = camera1,state = True) self.assertTrue(camera1.currentState)' – Sdude13

+0

是的,我也会做这样的事情。为什么它不工作? – Marat

+0

我不确定。这些值在网站上正确更新。但是在运行测试时,测试失败了“AssertionError:False is not true” – Sdude13