【问题标题】:How do you set the default value for Django's 'on_delete=models.SET_DEFAULT'如何为 Django 的“on_delete=models.SET_DEFAULT”设置默认值
【发布时间】:2021-09-21 07:14:00
【问题描述】:

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

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

【问题讨论】:

    标签: python django django-models foreign-keys


    【解决方案1】:

    要使SET_DEFAULT 起作用,default 应在ForeignKey 声明中使用:

    author = models.ForeignKey('Author', on_delete=models.SET_DEFAULT, default=None, null=True)
    

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

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

    【讨论】:

    • 这只有在null=True Django docs 时才有可能。
    • 当将默认值指定为无时,这是否会使该字段自动为空?还是我应该明确声明?
    • docs.djangoproject.com/en/3.2/ref/models/fields/#null 你可以在文档中检查默认值。这是错误的,你必须明确设置它
    • 对此进行了测试。如果默认为None,则需要null=True。很好的收获,谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2011-08-01
    • 2016-05-04
    相关资源
    最近更新 更多