我有一个需要与旧数据库集成的 Django ORM 模型。模型是通过 生成manage.py inspectdb
的,类定义如下:
class ClientJob(models.Model):
id = models.AutoField(primary_key=True, db_column="id")
CustomerGuid = models.CharField(max_length=40, db_column='CustomerGUID', blank=True)
JobGuid = models.CharField(max_length=40, db_column='JobGUID', blank=True)
AgentGuid = models.CharField(max_length=40, db_column='AgentGUID', blank=True)
class Meta:
db_table = u'ClientJob'
主键id
最初定义为models.IntegerField(primary_key=True)
,但根据我对 Django 的理解,如果我希望它自动递增因此需要更改为 AutoField。
我可以毫无问题地查询对象,但是当我尝试创建和保存新对象时遇到麻烦。以下代码抛出IntegrityError
消息“列“id”中的空值违反非空约束”。
new_job = ClientJob.objects.create(CustomerGuid=customer_guid, JobGuid=str(uuid4()), AgentGuid=agent_guid)
new_job.save()
我怀疑(但绝不肯定)这可能是因为我的 ClientJob 表的主键取决于自定义序列。序列的定义如下:
CREATE SEQUENCE seq_client_job_id
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 11020
CACHE 1;
ALTER TABLE seq_client_job_id
OWNER TO ssa;
任何有助于阐明这一点的帮助将不胜感激。