Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据库触发器的Django版本?_Python_Mysql_Django_Django Models_Triggers - Fatal编程技术网

Python 数据库触发器的Django版本?

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有一个外键指向cameraID。 照相机和时间戳都有一个“状态”字段。 每个时间戳条目都有一个摄像头和一个当前状态。
我想在更新相机的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?