0

我最近将 JSON 文件中的大量数据添加到我的 Django“成员”模型中。为此,我必须使我的大多数变量能够接受 null 或空白,以便处理 JSON 文件没有关于特定变量等信息的情况。

event = models.CharField(max_length=200, blank=True, null=True)

tool = models.CharField(max_length=200, blank=True, null=True)



other = models.CharField(max_length=200)

protocol = models.CharField(max_length=200)

但是,我不小心忘记为此目的更改 2 个变量。令人惊讶的是,即使 JSON 数据没有向该变量添加任何内容,我的对象也毫无问题地生成。

所以这是我的问题:

  1. 当一些不允许为空的变量实际上为空或至少没有数据时,成员对象是如何创建的。

  2. 我认为这个限制是在数据库级别,但这里似乎只针对用户提交的数据,因为当我在内部创建对象时,它实际上允许我有几个空/空白变量。

  3. Django 是否在为我处理幕后的事情?

我知道这很多,但我希望它有意义....谢谢

4

1 回答 1

1

首先,避免在基于字符串的字段(例如 CharField 和 TextField)上使用 null ,除非您有充分的理由(https://docs.djangoproject.com/en/dev/ref/models/fields/#null

将为您在 DB 中的字段生成以下模式

event character varying(200),
tool character varying(200),
other character varying(200) NOT NULL,
protocol character varying(200) NOT NULL,

这意味着您可以在数据库中为“事件”和“工具”字段输入“NULL”值,但不能为“其他”和“协议”字段输入“NULL”值。

但是,无论天气如何,您都可以为所有字段输入空白文本,它们是否为“空白=真”。原因是“Blank=True”仅由 Django 用于其自己的验证,而不反映在数据库模式中。

于 2013-09-12T09:04:31.150 回答