null = True || blank = True || null = True && blank = True
可以翻译为:如果 "null = True" 或者 "blank = True",或者两者都为真(即 "null = True && blank = True"),则执行该操作。
class TestModel(models.Model):
field1 = models.CharField(max_length=100, null=True)
field2 = models.CharField(max_length=100, blank=True)
field3 = models.CharField(max_length=100, null=True, blank=True)
MySQL的数据库字段:
CREATE TABLE TestModel (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`field1` VARCHAR(100) NULL DEFAULT NULL,
`field2` VARCHAR(100) NOT NULL,
`field3` VARCHAR(100) NULL DEFAULT NULL,
)
案例一:
null=True
。
db: db field is accepts null value
form: form field is `required`
NB: DB IS ACCEPTS NULL VALUE, BUT FORM FIELD IS REQUIRED. SO FORM IS
SUBMITTED WHEN THIS FIELD HAVE SOME VALUE. it's good.
第二个案例:
blank = True
。
db: db field is not accepts null value
form: form field is `optional`
NB: FORM IS VALID WITHOUT ANY VALUE, BUT DB IS NOT ACCEPTS NULL VALUE.
SO THE FORM IS SUBMITTED WITHOUT ANY VALUE THEN BOOM. it's worst.
案例-03:
null = True && blank = True
,翻译为:空值为真且空白为真。
db: db field is accepts null value
form: form field is `optional`
NB: HERE FORM FIELD IS OPTIONAL & FORM IS VALID WITHOUT ANY VALUE
& DB ALSO ACCEPTS NULL VALUE. SO, IT'S BEST TO USE `null=True && blank=True`
:)
ForeignKey
的应用场景,其中blank=True
,但没有null=True
。当保存模型时,我想通过创建已发布的条目来自动“发布”它。因此,我不能将null
保存到数据库中,因为每个模型都必须是"published",但我希望能够在管理页面中留空该字段。 - Sergey Orshanskiy