【问题标题】:Does null=True imply default=None for models?null=True 是否意味着模型的 default=None?
【发布时间】:2023-03-05 08:18:01
【问题描述】:

当使用null=True 允许 Django 模型的数据库字段为 NULL 时,默认值是否保证默认为 NULL?还是我必须手动指定:

report = models.FileField(upload_to='reports', null=True, default=None)
                                                          ^^^^^^^^^^^^

我在有关 models fields 的文档中找不到任何关于它的信息。

【问题讨论】:

    标签: django django-models null django-1.7


    【解决方案1】:

    不完全是:

    django/db/models/fields/__init__.py

    class NOT_PROVIDED:
        pass
    
    class Field(RegisterLookupMixin):
        # some code
        def __init__(..., default=NOT_PROVIDED, ...):
    

    这基本上意味着它是数据库中的任何内容。例如,如果您创建表并直接在数据库中设置默认值(不更改模型),那么它将使用数据库中的值。

    【讨论】:

    • 谢谢。我猜如果没有显式更改,这将导致公共数据库中的 NULL ,对吧?
    • @danijar 是的,没错。我从来没有听说过数据库会以不同的方式做到这一点。
    • 好的。顺便问一下,null=False的字段是否设置为0''等?
    • @danijar 不确定,但我认为如果您不设置该字段,它将引发异常(保存时)。测试一下。
    • @danijar 我同意你的看法,不幸的是事实并非如此。 :) 没问题,如果您有需要,请随时发布更多问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2020-04-27
    相关资源
    最近更新 更多