2011-02-02 3 views

답변

12

대부분의 경우 실제로 다중 열 키가 기본 키일 필요는 없습니다.

Django는 서로 게이트 키로 가장 잘 작동합니다. 즉, id이라는 자동 증가 필드를 자동으로 정의하고이를 기본 키로 설정합니다. 거의 모든 용도에 적합합니다.

두 개 이상의 필드에서 모델에 고유 제한 조건을 적용해야한다면 Meta 클래스의 unique_together 설정을 사용할 수 있습니다.

+0

대리 키의 작동을 이해하려면이 [link] (http://stackoverflow.com/questions/16800375/how-can-set-two-field-primary-key-for-my-models-in-django)을 참조하십시오. .. – Jeril

+0

"대부분의 시간"이 언제입니까? 고마워 –

6

Django에는 내장되어 있지 않지만 (#373 참고) 하단에는 http://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys의 설명을 참조하십시오. 저는 후손을 위해 여기 "대체 방법"섹션을 복사했습니다.

다른 방법

notnotpeter : 현재 수행 할 수 있습니다 "가짜" 그것은 장고 차 가 될 열쇠 중 하나를 선언하고 모델에 고유 한 제약 조건을 추가하여. (자세한 정보 ... 예를 필요가 있겠습니까?)

MJM : 여기 제안되고 있는지 이해 경우, 사용하는 비 화합물 고유 키가있는 경우에만 작동합니다. 이와 같이, 은 자연스럽게 CK를 장고에 넣는 디자인을 압착 할 수 있지만, CK 만있는 기존의 스키마 을 사용하는 데는 을 사용하지 않아도됩니다.

djansoft : 을 고유하게 사용하여 수행 할 수 있습니다.

토부 : 하나의 키만 사용할 수 없습니다. A 사용 사례 : a 이름 공간 태그? 모델명은 의 CK로 이름 공간과 이름으로 구성됩니다. 기본 키는 단지 네임 스페이스가 될 수 없으며 이 모호하기 때문에 이름 만 사용할 수 있습니다. 유일한 해결책 (그리고 나는 모델링이 좋지 않아 모델링이 이고 데이터베이스 액세스가 카운터에 일련 번호가 지정되도록 이 됨)는 AutoField?를 사용하는 것입니다.

toszter : 열매 나 전화, 그런데 왜 는 장고는 다음 세 가지 PK 단지 해시 의는 "숨겨진" pk_composite 열을 만드는 데 사용하는 모델에 기본 키로 컬럼의 수를 선언하지 행의 값은? pk에서 조회를 수행 할 때 값의 전체 조합이 기본 키일 경우 아무 것도 입니다. 당신이 볼 때 그래서 이 에 필요한 값에 따라 전체 pk_composite를 생성, 해시 은 항상 계산하고 해시 알고리즘이 공개 경우, 의 URL, DB 조회에서 쿼리 문자열, 그냥 약을 사용할 수 있습니다 어딘가에. 내 마음 속에서 꽤 단순 해 보입니다. 그러나 그때 다시는 위대한 것으로 들어가지 않을 것입니다. 여기 세부 사항입니다.

즉, 나는 테이블에 ID를 만들어 기본 키를 만들 것이라고합니다. 그런 다음 user_id + 타임 스탬프에 고유 컨트 롤을 추가하십시오. 키가 단일 열 수있는 경우

2

:

ID가 추가된다 "즉시"(variable.id) 및 현재 시간은 yourapp에

from django.db import models 

date = models.DateTimeField(auto_now_add=True) 

를 추가 /models.py

2 가지 가치가 있으므로 마녀 중에서 원하는 모양으로 키를 만들 수 있습니다.

다중 열 키를 원하면 다른 대답을 읽으십시오. 희망을 당신을 도울 수 있습니다.

+0

실제로 userid 필드는 외래 키입니다.이 키는 사용자 테이블의 기본 키입니다. 그 이유는 무엇입니까? – junto

관련 문제