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