【问题标题】:Creating a model with null attribute. Bug in Django 1.3.6?创建具有空属性的模型。 Django 1.3.6 中的错误?
【发布时间】:2023-03-22 14:18:01
【问题描述】:

我从这个开始:

from django.db import models

class Example(models.Model):
     id = models.CharField(null=False, blank=False)
     name = models.CharField(null=False, blank=False)

现在,如果我创建一个有名称但没有 id 的新对象,则 id 将被替换为空字符串,并且对象创建将成功。

example = Example.objects.create(name="test")

我希望它返回错误,因为我指定了 null=Falseblank=False。有没有“本地”的方式来做到这一点? 我正在使用 Django 1.3.6。

【问题讨论】:

标签: python django django-models


【解决方案1】:

当然,这不是错误,但在文档中进行了充分说明。来自field options docs

如果字段的空白=True,表单验证将允许输入空值。如果某个字段的空白=False,则该字段为必填项。

关键是对验证的引用。当然,这些文档在data validation 上也有完整的选择。同样,从该页面:

请注意,当您保存模型时,验证器不会自动运行,但如果您使用的是 ModelForm,它将在您的表单中包含的任何字段上运行您的验证器。

因此,正如模型验证页面所述,要应用空白=False 的验证,您应该运行模型的 full_clean() 方法。

(无论如何,抱怨两个版本的旧版本中可能存在的错误是没有意义的:如果您认为存在错误,则应该升级到最新版本,看看是否已修复。无论如何,这不是错误。)

【讨论】:

  • 您的意思是要覆盖保存方法以在保存之前运行full_clean
猜你喜欢
  • 2015-12-03
  • 2011-12-09
  • 1970-01-01
  • 2013-03-07
  • 2014-05-07
  • 1970-01-01
  • 2022-01-19
  • 2022-10-14
  • 1970-01-01
相关资源
最近更新 更多