Django 在创建时不验证?

smi*_*omb 7 django validation

是不是create函数没有根据模型规范进行验证?这是我的模型:

class Contact(models.Model):
    id = models.AutoField(primary_key=True)

    firstname = models.CharField(max_length=100, null=False, blank=False)
    lastname = models.CharField(max_length=100, null=False, blank=False)
    email = models.EmailField(max_length=150, blank=False, null=False)
    active = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)

我在我的view

new_contact = Contact.objects.create(firstname=a,
    lastname=b,
    email=c)
# where a, b, & c are empty strings in request.POST, which shouldn't validate
Run Code Online (Sandbox Code Playgroud)

呼叫create通过没有问题。但是,不应该是这样。该模型根据需要指定这些字段。事实上,如果我转到管理面板并查看此对象,则无法保存它(不进行任何更改),因为它对我大喊这些字段是必需的。

create不验证是正常行为吗?

我怎样才能强制它验证?

e4c*_*4c5 0

您正在混淆表单和模型。

字段空白

如果为 True,则该字段允许为空。默认值为 False。

请注意,这与 null 不同。null 纯粹与数据库相关,而空白则与验证相关。如果字段的空白=True,表单验证将允许输入空值。如果某个字段的空白=False,则该字段将是必填字段。

所以是的,模型不去验证空白是正常行为。

如果您想确保用户输入的空白​​不会最终出现在数据库中,您应该使用ModelForm。直接使用request.POST是最不像django的