1
2つの主キーを使用してモデルを更新しようとしています。複合プライマリキーを使用したDjangoアップデートモデル
Djangoはそれをサポートして正式ではないので、私はこの問題を回避する使用しています:
class myModel(models.Model):
class Meta:
unique_together = (('key1', 'key2'),)
key1= models.IntegerField(blank=False, primary_key=True)
key2= models.CharField(blank=False, max_length=30)
attr3 = models.CharField(max_length=30)
attr4 = models.CharField(max_length=30)
をしかし、私は既存のオブジェクトを更新しようとするたびに、私は次のエラーを取得する:
django.db.utils.IntegrityError: UNIQUE constraint failed: myApp_myModell.key1, myApp_myModel.key2
私が試しました私のモデルを更新するには、次
myModel.objects.update_or_create(
key1=kw1,
key2= kw2,
defaults={
'attr3':attr3_str,
'attr4':attr4_str,
})
と、次の
defaults={
'attr3':attr3_str
'attr4':attr4_str,
}
try:
obj = myModel.objects.get(key1=kw1, key2=kw2)
for key, value in defaults:
settatr(obj, key, value)
obj.save()
except myModel.DoesNotExist:
print("DOESNT EXISIT")
new_values = {'key1': kw1, 'key2': kw2}
new_values.update(defaults)
obj = myModel(**new_values)
obj.save()
どのようにすれば、整合性エラーを取得せずにモデルを更新できますか?
あなたは 'unique_together'制約を追加した後に移行を実行しましたか? – falloutcoder
はい、私も でデータベースをリセットしました。manage.py flush - > manage.py makemigrations - > manage.py migrate – Ali
kw1とkw2変数の値は何ですか? – falloutcoder