首页 > 解决方案 > “city_id”列中的空值违反非空约束

问题描述

当我尝试使用 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

标签: pythondjangopostgresql

解决方案


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

要解决这个问题:

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

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


推荐阅读