我有一个名为Fiche的模型,其中包含charfield和一些外键。当我尝试删除一行时:
f = Fiche.objects.all()[0]
f.delete()
我收到以下错误:
('42000', "[42000] [FreeTDS][SQL Server]View or function 'entites_pilefusion_bFiche' is not updatable because the modification affects multiple base tables. (4405) (SQLExecDirectW)")
该观点部分基于Fiche好,但我应该可以删除一排Fiche,不是吗?实际上,当我尝试直接在SQL Server中删除同一行时,我没有问题。
问题是新问题,似乎在我在Fiche中添加新字段后出现。 我不知道如何解决甚至追踪问题。我完全迷失了,任何帮助都会非常感激。 帕特里克
编辑:我通过在PileFusionFiche的模型定义中添加(基于我的视图entites_pilefusion_bFiche)子句 on_delete = models.SET_NULL 来解决问题,以避免我视图上的ON DELETE CASCADE行为class PileFusionFiche(models.Model):
entite = models.ForeignKey('entites.Entite')
fiche = models.ForeignKey('docentites.Fiche',blank=True,null=True,on_delete=models.SET_NULL)
class Meta:
db_table = 'entites_pilefusion_bFiche'
managed = False
再次感谢@Bistabil。
答案 0 :(得分:1)
我猜测从另一个表中添加字段后出现了问题。
https://msdn.microsoft.com/en-us/library/ms187956.aspx
关于可更新视图的段落是您感兴趣的。
您需要一个INSTEAD OF触发器才能使用视图影响多个表。