我有一个带有两个模型的Django项目,它们之间存在多对多关系。当我尝试向相对表中添加一个条目时,Django应该为该条目创建唯一标识,但是它设置了空ID,因此出现完整性错误。
这是我使用的代码:
models.py:
class Activity(models.Model):
id_att = models.AutoField(primary_key=True)
...
types = models.ManyToManyField(
Type,
related_name='att_type',
through='att_type',
through_fields=('id_att', 'id_type'),
)
class Type(models.Model):
id_type = models.AutoField(primary_key=True)
descr_type = models.CharField(max_length=30)
class att_type(models.Model):
id_att = models.ForeignKey(
Activity,
on_delete=models.CASCADE,
related_name='att_type'
)
id_type = models.ForeignKey(
Type,
on_delete=models.CASCADE,
related_name='type_att'
)
forms.py
def save(self, id_att=None, usr=None, commit=True):
...
for t in types:
att_type.objects.create(
id_att=att,
id_type=t
)
...
这是我得到的错误:
IntegrityError at /persport/att/1029/
null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, 1029, 8).
我在使用ubuntu 16.04的计算机上运行了此代码,它按预期运行,但是当尝试在使用ubuntu 16.04.5的VPS上运行此代码时,出现了以上错误。
在服务器上运行代码之前,我先将数据库转储到计算机上,然后将其还原到服务器上。
如果这可以帮助我在服务器上安装Django 2.0.3和Postgres 9.5.14,在我的计算机上安装Django 2.0和Postgres 10.5。