我有一个这样的模型:
class InputTypeMap(models.Model):
input_type = models.ForeignKey(InputType, on_delete=models.CASCADE)
training = models.ForeignKey(Training, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
gender = models.ForeignKey(Gender, on_delete=models.CASCADE)
当我尝试使用以下方式创建此模型的实例时:
InputTypeMap.objects.create(input_type=input_type,
training=training,
gender=gender,
category=category)
我遇到了一个异常
Traceback (most recent call last):
File "/home/hove/sleipner/venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.NotNullViolation: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, Maintenance, Female, MareGielding, No).
从错误信息看,似乎是新条目的ID键没有生成。
这段代码一直能正常工作,但“突然”在本地失败了——可能是在执行apt get upgrade
之后。当我使用sqlite或Postgres-10.14运行相同的代码时,事情仍然像以前一样正常工作。目前还不清楚这是我的代码(最有可能......)、Django还是Postgres的一个bug。我正在使用Django版本3.1.2。
我使用的Postgres服务器版本是9.6。
id
字段很可能是主键的一部分,而且它们不能为 NULL。从来没有过。 - wildplasserDEFAULT
作为值提供给它时才会生成它。 - wildplasser./manage.py migrate
命令? - pbacterio