Python django阻止删除模型实例
我有一个models.Model子类,它表示mysql数据库上的一个视图(ie managed=False) 但是,在运行单元测试时,我得到: DatabaseError:(1288,“删除的目标表my_view_表不可更新”) 此删除请求的来源是(间接地)通过外键。我已(简化): 在测试拆卸过程中,我删除了ActualTableModel实例,django似乎遵循了记录的行为: 当Django删除一个对象时,它会模拟DELETE CASCADE上SQL约束的行为——换句话说,任何外键指向要删除的对象的对象都会随之删除 当应用于(managed=False)视图时,这似乎会导致问题 我已尝试覆盖delete方法以防止删除:Python django阻止删除模型实例,python,django,django-models,Python,Django,Django Models,我有一个models.Model子类,它表示mysql数据库上的一个视图(ie managed=False) 但是,在运行单元测试时,我得到: DatabaseError:(1288,“删除的目标表my_view_表不可更新”) 此删除请求的来源是(间接地)通过外键。我已(简化): 在测试拆卸过程中,我删除了ActualTableModel实例,django似乎遵循了记录的行为: 当Django删除一个对象时,它会模拟DELETE CASCADE上SQL约束的行为——换句话说,任何外键指向要删除
class MyViewModel(models.Model):
...
def delete(self, *args, **kwargs):
pass # deletion of a view row is never valid
但这并没有解决问题
我怎样才能防止这种行为呢?也许你可以试试以下几种方法之一 即:
谢谢你的文档链接。我试过使用_delete=models.SET_NULL,但忽略了什么都不做。后者修复了错误。
class MyViewModel(models.Model):
...
def delete(self, *args, **kwargs):
pass # deletion of a view row is never valid
problematic_field = models.ForeignKey(ActualTableModel, on_delete=models.PROTECT)