2016-09-27 3 views
3
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) 

上記は私のモデルです。私は管理者を使って設定を追加することができます。私は管理者にカスタマイズを設定していません。それは私が管理者との既存の構成を更新すると、非常に基本的なDjango 1.9 - アップデート時のIntegrityError

admin.site.register(Configuration) 

が、それはIntegrityErrorをスローで

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

私の質問:管理者は、既存の設定が変更されていることを知っていて、これを処理すべきではありませんそれに応じて?何か不足していますか?明確にするには - SAMPLE_CONFIGURATION - そのテーブルにはconfiguration_keyという行が1つしかありません。私はadminを使用してその行のconfiguration_valueを編集しようとしており、Integrityerrorをスローします。

答えて

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() 
+0

残念ながら、コードの他の部分の更新に影響を与えずにDjangoを更新することはできません。私はテストを実行しようとします。 – deepakkt

+0

生成されたSQLを直接実行することをお勧めします。 DEBUGをTrueに設定し、django.dbインポート接続>>>> connection.queriesから>>>の値をチェックし、このSQLコマンドをmysqlで実行します。 –

関連する問題