我发现,当我通过表单插入任何字符串form field
它捕获它作为一个空字符串''
。Django的空和空字符串
但是,当我通过表单插入整数form field
的任何内容时,它将其捕获为[null]
。
这是一个很好的做法吗?字符串应该是null
以及db?
我发现,当我通过表单插入任何字符串form field
它捕获它作为一个空字符串''
。Django的空和空字符串
但是,当我通过表单插入整数form field
的任何内容时,它将其捕获为[null]
。
这是一个很好的做法吗?字符串应该是null
以及db?
这是一个很好的做法。如果允许字符串为null
,则会有两种方法获得空字符串:null
和""
。这给你多个值来检查,这是低效和杂乱。
这是一个Django convention,但较好的方法是所有的应用程序,除非你有需要null
到意味着不同的东西比""
。
我认为该字符串应该也是NULL,但取决于您的应用程序,请参阅MySQL, better to insert NULL or empty string?。
如果你想存储的NULL一个空场,在添加问题null=True
到现场。见https://docs.djangoproject.com/en/dev/ref/models/fields/#null
这取决于field.empty_strings_allowed
属性。
有些字段会覆盖到False
。但CharField
保持它True
,从而使Field._get_default作为默认返回空字符串 - 即使blank=True
。将None
作为默认值的唯一方法是在字段上使用null=True
。
所以,如果你有db中的字段,它永远不应该为空,并且不允许空格永远不会放在那里。 objects.create
。您需要在模型save
方法中输入self.full_clean()
或其他验证。
如果在我的数据库中,我将字段设置为ALLOW NULL,那么我希望None被存储为NULL,而不是空字符串。 Django拥有它的约定没问题,但Django不一定是访问数据库的唯一系统。如果一个单独的应用程序可以存储NULL,那么你最终不得不检查null与空字符串。然而,一个简单的“if not value”将在Python中检查两者。 – six8
这可能是'django练习',但在数据库中通常使用空字符串来表示缺失的数据是不好的做法。这是NULL的用途。我真的希望这不是django的标准做法。 – Darren
这不是一个很好的做法,它是在早期引入的惯例,因为不必在模板中处理None,也不必将空白表单域清理为None。这是一个快速完成工作的捷径,但我们现在应该将其作为一种良好的实践证明其合理性,因为懒惰或缺乏时间让我们获得了这种“实践”。这就是为什么我们现在有2个字段属性来处理这个东西。 –