Django CharField unique = unique = True가 설정되어있는 동안 True가 작동하지 않는 것 같습니다.

mathcounterexamples.net

Django 3.0.2 및 sqlite3 DB를 사용하고 있습니다.

다음과 같은 간단한 모델을 설정했습니다.

from django.db import models


class Description(models.Model):
    IDENTIFIER_LENGTH = 30
    identifier = models.CharField(max_length=IDENTIFIER_LENGTH, blank=False, unique=True, primary_key=True)

이상하게도 unique=True작동하지 않는 것 같습니다. 셸 모드에서 실행되는 다음 코드

from testunique.models import Description
object = Description('first-object')
object.save()
object.save()

오류가 발생하지 않습니다. 기록을 위해 다음은 마이그레이션의 SQL 코드입니다.

BEGIN;
--
-- Create model Description
--
CREATE TABLE "testunique_description" ("identifier" varchar(30) NOT NULL PRIMARY KEY);
COMMIT;

여기서 무엇이 잘못 되었습니까? 답변 해주셔서 감사합니다.

빌렘 반 온셈

Django는 기본 키 가 설정된 레코드를 이미 데이터베이스에있는 레코드로 간주 합니다. 따라서 쿼리를 수행 하지 않고 . 때때로 Django의 기본 키를 설정하여 주어진 레코드의 복사본을 만드는 트릭으로 사용됩니다 (그때 Django가 다른 쿼리 를 만들기 때문에 ).INSERT …UPDATE …NoneINSERT …

다음을 사용하여 강제 삽입 할 수 있습니다.

Description.objects.create(name='first-object')
Description.objects.create(name='first-object')  # raises an error

또는 다음과 함께 작업 할 수 있습니다 force_insert=True.

Description(name='first-object').save(force_insert=True)
Description(name='first-object').save(force_insert=True)  # raises an error

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관