【发布时间】:2013-04-18 00:24:49
【问题描述】:
我在我的模型中创建了这个字段:
numero_str = models.AutoField(primary_key=True, unique=True, default = 0)
默认值似乎使 AutoField 的自动增量无效,但如果我将其取出,我会收到一条错误消息,指出该字段不能为空。我不明白的是:如果我将它声明为 AutoField,它不应该自动生成一个顺序整数吗?或者我应该在保存项目时声明一些东西?
更具体地说,我的应用程序基本上是一个通过电子邮件发送并保存在数据库中的表单。发送时发生错误(以防我取出默认值)。它说:
IntegrityError at /solicitacaodetreinamento/
str_solicitacao.numero_str may not be NULL
【问题讨论】:
-
您在哪里收到关于不为空的错误?发布确切的消息。
-
我的猜测是默认为0,或许你应该使用default=1或者添加null=True
-
@J.Ghyllebert default=1 给了我与 default=0 相同的错误,并且 null=True 返回“主键字段不能有 null=True”
-
您的模态可能只有一个
primary_key=True字段。Read this 以获取更多信息。此外,它不能是现有模型的ALTER,因为如果在第一次模型-数据库同步期间模型中没有预定义的主键字段,django 会自动创建一个主键字段。否则违反Only one primary key is allowed on an object.规则。 -
@RodrigoGuedes,第一次同步模型时,django 在模型字段中搜索
primary_key属性。如果找不到,则创建一个名为id的文件。如果有 ona,那么 django 就不要创建它。其次,django 会让你只有一个属性为primary_key的字段。在每个模型中。这可以由您在模型中定义,也可以由 django 自动创建。 Read this and all realted topics。我不确定,但可能是因为这个。
标签: django django-models python-2.7