1
외래 키 집합과 함께 django에서 중복 키 무결성 오류가 발생했습니다.Django IntegrityError 외래 키 중복 항목
나는 다음과 같은 기능을 가지고 :
def update_relationship(actor, action, status, target):
existing = Relation.objects.filter(actor=actor, target=target)
# If this relation is 'on', turn it off
if Relation.objects.filter(actor=actor, target=target, status=status):
Relation.objects.filter(actor=actor, target=target).update(status="")
# If this relationship is not on, turn it on
else:
created = True
if existing:
existing.update(status=status)
else:
Relation.objects.create(actor=actor, target=target, status=status)
당신은 내가 관계가 데이터베이스에 이미 존재하는지 테스트 한 후이 존재하는 경우를 업데이트하고이를 경우 새 행을 만드는 오전 볼 수 있듯이 하지 않습니다. 그러나, 내가 재현 할 수없는 몇 가지 조건에서 장고는 나에게 중복 키 에러를주고있다. 심지어 내가 말할 수있는 한 그것의 인스턴스가 하나 밖에없는 상황에서도. existence를 확인하기 위해 모든
class Relation(models.Model):
Status = Choices(('L', 'Like', 'Like'),
('D', 'Dislike', 'Dislike'),
('S', 'Save', 'Save'))
actor = models.ForeignKey('members.Member', related_name='relations')
target = models.ForeignKey('members.Member', related_name='reverse_relations')
status = models.CharField(choices=Status, max_length=10)
created = models.DateTimeField('created', auto_now_add=True)
notified = models.BooleanField(default=False)
notified_mutual = models.BooleanField(default=False)
class Meta:
unique_together = (('actor', 'target'),)
ordering = ('created',)
verbose_name = 'Relation'
verbose_name_plural = 'Relations'
이 가지 좋을 것입니다. 감사! – ChrisBurnor
확인. 이상하게도 이것은 장고 get_or_create를 사용하여도 여전히 발생합니다. 아마도 기본값을 설정하지 않았기 때문일 것이라고 생각했지만 기본값으로도 여전히 발생합니다. – ChrisBurnor