Django 1.9 - 更新时的IntegrityError

时间:2016-09-27 06:35:37

标签: django django-models

class Configuration(models.Model):
    configuration_key = models.CharField(max_length=100, unique=True)
    configuration_value = models.TextField()
    configuration_description = models.TextField("a brief description of this setting", blank=True)

以上是我的模特。我能够使用管理员添加配置。我没有在管理员上配置任何自定义。这是一个非常基本的

admin.site.register(Configuration)

当我使用admin更新现有配置时,会抛出IntegrityError

duplicate key value violates unique constraint "config_configuration_configuration_key_key"
DETAIL:  Key (configuration_key)=(SAMPLE_CONFIGURATION) already exists.

我的问题:管理员不应该知道现有配置已修改并相应处理吗?我错过了什么吗?要清楚 - SAMPLE_CONFIGURATION - 表中只有一行具有configuration_key。我正在尝试使用管理员编辑该行的configuration_value,它会抛出Integrityerror。

1 个答案:

答案 0 :(得分:0)

你的代码很好,一定没有错误。将Django更新为当前版本,然后重试。

还尝试隔离问题。使用测试重现该问题。如果测试通过,则问题不在您的代码中。

仔细检查DB内部的内容,尝试使用SQL直接更新行。

此测试更新configuration_value,没有任何完整性问题。

class ConfigurationModelTest(TestCase):
    def test_uniq_issue(self):
        config = Configuration.objects.create(configuration_key='SAMPLE_CONFIGURATION',
                                              configuration_value='value')
        config.save()

        config.configuration_value = 'updated_value'
        config.save()