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。
答案 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()