“ city_id”列中的空值违反了非空约束

时间:2018-12-20 02:03:13

标签: python django postgresql

当我尝试使用Django admin在数据库中添加新条目时,会发生此错误。该错误表明,即使我尝试添加新状态。我的模型怎么了?

class City(models.Model):
    city_id = models.AutoField(primary_key=True)
    city = models.CharField(max_length=100, blank=True, null=True)
    state = models.ForeignKey('State', models.DO_NOTHING, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'city'

    def __str__(self):
        return self.city

class State(models.Model):
    state_id = models.AutoField(primary_key=True)
    state = models.CharField(max_length = 10, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'state'

    def __str__(self):
        return self.state

1 个答案:

答案 0 :(得分:0)

刚发现问题所在: 我的PostgreSQL数据库有问题。即使在数据库中运行INSERT时也会显示此错误。因此,问题在于,我的PRIMARY KEY不是SERIAL值,而是INTEGER,因此当我插入新值时它不能自动递增。

要解决此问题:

  1. 删除旧的整数id及其上的所有外键约束。
  2. ALTER TABLE city ADD COLUMN city_id SERIAL PRIMARY KEY
  3. 用新的外键重新连接表

之后,我的问题解决了。希望这可以帮助其他面临类似问题的人!