我在Django中定义了两个模型,第二个模型基于第一个模型,并且不受管理,因为它基于SQL Server视图(而不是表)的后端
class Embedder(models.Model):
{my_fields...}
class MostRecent(models.Model):
embedder = models.ForeignKey(Embedder)
status = models.IntegerField()
class Meta:
db_table = 'embedder_most_recent'
managed = False
问题是我不能删除Embedder的实例,因为这个错误:
View or function 'embedder_most_recent' is not updatable because the modification affects multiple base tables. (4405) (SQLExecDirectW)")
这个问题似乎存在于Django中,因为我可以毫无错误地删除SQL中的嵌入行。我该如何解决这个问题?
正如marcushep已经发布的那样,Django文档中有足够的文档来描述这种行为。
由于Django ForeignKey
引用了另一个Django模型对象,任何删除父对象的尝试都意味着Django必须找到一种方法来管理引用ForeignKey
的对象。您应该明确指定此行为。
以下示例将删除包含ForeignKey
:的对象
class MostRecent(models.Model):
embedder = models.ForeignKey(Embedder, on_delete=models.CASCADE)
status = models.IntegerField()
尝试在删除时定义备用项。https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ForeignKey.on_delete