Django在ManyToMany插入上添加了null键

时间:2018-11-04 21:31:37

标签: python django

我有一个带有两个模型的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。

0 个答案:

没有答案