Python 数据库触发器的Django版本?
我有两张桌子:照相机和时间戳, Timestamp有一个外键指向cameraID。 照相机和时间戳都有一个“状态”字段。 每个时间戳条目都有一个摄像头和一个当前状态。Python 数据库触发器的Django版本?,python,mysql,django,django-models,triggers,Python,Mysql,Django,Django Models,Triggers,我有两张桌子:照相机和时间戳, Timestamp有一个外键指向cameraID。 照相机和时间戳都有一个“状态”字段。 每个时间戳条目都有一个摄像头和一个当前状态。 我想在更新相机的Timestamp.State时更新相机的.State值。在SQL中,我知道如何使用数据库触发器实现这一点。但我不确定如何在Django中实现这一点。有两个选项:使用或修改Timestamp.save()以实现所需的行为 例如: class Timestamp(models.Model): ...
我想在更新相机的Timestamp.State时更新相机的.State值。在SQL中,我知道如何使用数据库触发器实现这一点。但我不确定如何在Django中实现这一点。有两个选项:使用或修改
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)
是的,我也会这样做。为什么不起作用?我不确定。这些值在站点上正确更新。但是在运行测试时,测试失败“AssertionError:False is not true”只是一个安全检查-您是否在创建后调用了timestamp.save()
?之后是否重新加载了摄影机1?