如何设置 Django 'on_delete=models.SET_DEFAULT' 的默认值

YCo*_*ode 2 python django foreign-keys django-models

在下面的示例中,如何以及在哪里设置默认值?

author = models.ForeignKey('Author', on_delete=models.SET_DEFAULT)

bdb*_*dbd 5

为了SET_DEFAULT工作,default应该在ForeignKey声明中使用:

author = models.ForeignKey('Author', on_delete=models.SET_DEFAULT, default=None, null=True)
Run Code Online (Sandbox Code Playgroud)

default在这种情况下,删除相关对象时将使用设置的任何内容。

编辑:正如@MojixCoder和@Ersain所指出的,在这个例子中,您需要设置null=True,否则删除ForeignKey的实例将导致IntegrityError引发。

  • 这只有在 `null=True` [Django 文档](https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.SET_NULL) 时才可能。 (3认同)
  • 当将默认值指定为 None 时,这是否会使该字段自动为空?或者我应该明确声明它? (2认同)