여러 애플리케이션 콘텐츠 유형으로 인한 Django 픽스처 로드 문제
Django 픽스처를 MySQL 데이터베이스에 로드하려고 하면 콘텐츠 유형 충돌이 발생할 수 있습니다. 이 문제는 대상 애플리케이션이 다른 앱의 테이블에 의존하는 경우가 많기 때문에 특정 애플리케이션의 데이터를 격리하려고 할 때 발생합니다.
이 문제를 해결하려면 일반적으로 필요한 모든 테이블이 나올 때까지 dumpdata 명령에 추가 앱을 포함하는 것이 좋습니다. 설명됩니다. 그러나 이 경우 "fixture.json" 파일이 생성되지만 데이터를 테스트 픽스처로 로드하려고 시도하면 기본 키 값 충돌로 인해 제약 조건 위반이 발생합니다.
Django 문서에서는 덤프를 제안하지만 contenttypes 앱을 사용하면 이미 이 작업을 수행하고 있음을 나타냅니다. Django Issue Tracker에 제공된 권장 해결 방법으로는 문제가 해결되지 않는 것 같습니다.
이 문제에 대한 잠재적인 해결책 중 하나는 dumpdata 명령을 사용할 때 "--natural" 플래그를 활용하는 것입니다. 그렇게 함으로써 Django는 "자연 키"라고도 알려진 보다 내구성 있는 형식을 사용하여 외래 키를 나타냅니다. 예를 들어 "Permission.id" 대신 "Permission.codename"이 사용되고 "User.id" 대신 "User.username"이 사용됩니다.
"--natural" 플래그 사용 외래 키를 보다 강력하게 표현하고 픽스처를 로드할 때 충돌을 해결할 수 있습니다.
위 내용은 MySQL에서 콘텐츠 유형 충돌로 인해 Django Fixture가 로드되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!