Django 1.11忽略on_delete = models.set_null

时间:2018-01-13 00:43:06

标签: django postgresql django-models django-rest-framework

我有一个带模型的Django项目,如下所示:

class Track(models.Model):
    title = models.CharField(max_length=255)
    name = models.CharField(max_lenght=255)


class Disc(models.Model):
    a_side_disc = models.ForeignKey(Track, null=True,
                                    on_delete=models.SET_NULL)
    b_side_disc = models.ForeignKey(Track, null=True,
                                    on_delete=models.SET_NULL)
    in_jukebox = models.BooleanField()

这个模型是完全组成的,没有意义,但它显示了我在这种情况下的当前设置。

现在有了Django 1.11和Django Restframework,我有一个删除Track的路由。当我呼叫路由时,我检查轨道是否在光盘上,in_jukebox设置为False。如果是这种情况,我只是继续删除。 我希望Disc中的两个ForeignKeys都设置为Null,但是Disc也会被删除,就像我期望的CASCADE一样。

我使用Postgres作为数据库,并检查生成的Schema。我知道SET_NULL是由django而不是数据库完成的。但它没有完成。  我理解错了吗? on_delete的工作方向是什么,如果只有一个,我如何在另一方面做同样的事情?

0 个答案:

没有答案