django 키 상식

1546 단어 django외부 키
이곳의 시스템 환경은django1이다.6 os는 win7
그리고 외키와 몇 개의 매우 중요한 실체표로 관련(지역표는 다른 표의 외키로)을 하고 지역의 삭제 작업을 다 썼을 때 코드를 테스트했는데 기능이 정상이었다.그런데 눈이 콘솔로 이동해서 출력할 때 바보였어요.
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

좋은 웹페이지 즐겨찾기