django 키 상식
그리고 외키와 몇 개의 매우 중요한 실체표로 관련(지역표는 다른 표의 외키로)을 하고 지역의 삭제 작업을 다 썼을 때 코드를 테스트했는데 기능이 정상이었다.그런데 눈이 콘솔로 이동해서 출력할 때 바보였어요.
connexesql ->DELETE FROM `mngm_device` WHERE `mngm_device`.`area_id` IN (%s, %s, %s)connexesql ->DELETE FROM `ad_ad` WHERE `ad_ad`.`area_id` IN (%s, %s, %s)connexesql ->DELETE FROM `mngm_area` WHERE `id` IN (%s, %s, %s)
내가 이 지역을 삭제할 때 그와 관련된 실체를 먼저 삭제했다!!!이 지역은 부속 속성일 뿐인데 삭제할 때 더 중요한 실체를 모두 삭제하는 것은 심각한 문제야.
그래서 다음django orm에서 모델즈에서 각field가 정의한 파일을 조회했습니다.https://docs.djangoproject.com/en/1.6/ref/models/fields/#django.db.models.ForeignKey .그런 다음 필드 정의를 다음과 같이 수정합니다.
user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
지역area가 삭제되었을 때 이 필드에 다른 테이블을null로 설정하면area의 기록만 삭제됩니다.
django 중국어 키 상식:
* 외부 키와 연관된 객체는 자동으로 생성된 외부 키의 이름 뒤에 "id"가 필드 이름으로 추가됩니다.
* 기본적으로 외부 키는 자동으로 색인을 만들고, 자동으로 등급을 나누어 삭제합니다. 기본 외부 키는 필드가 그 테이블의 메인 키입니다
models.SET_NULL에는 다음과 같은 몇 가지 옵션이 있습니다.
* SET_NULL 키의 필드가 삭제되었을 때 null로 설정합니다. null=True가 지정되어 있어야 합니다.
*CASCADE 기본 옵션, 외부 키와 연결된 필드가 삭제될 때 모든 다른 테이블 레벨링이 삭제됨
* SET_DEFAULT는 연결된 레코드가 삭제될 때 기본값으로 복원되는 기본값을 설정합니다.
*DO_NOTHING django는 아무것도 하지 않습니다. 데이터베이스가 되돌아오는 대로 보고합니다.
*SET()는 연결 레코드가 삭제될 때 값을 트리거하는 함수를 set할 수도 있습니다.
orm이나 프레임워크에 대해 기본적인 설정이 많기 때문에 우리가 개발할 때 문서를 많이 테스트하고 많이 찾아야만 더욱 잘 사용할 수 있으며 놀라운 오류를 범하지 않는다.
... 에서 벗어나다http://www.th7.cn/Program/Python/201410/299321.shtml
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.