가능한 한. 당신이 PostgreSQL을 연결하고 두 개의 서로 다른 시퀀스를 만들 필요가 다음 기본 키
class MyModel(models.Model):
id = models.IntegerField(primary_key=True)
으로 표준 AutoField를 사용하지 않도록 우선은 모델을 변경하는 것입니다.
CREATE SEQUENCE small START 1;
CREATE SEQUENCE big START 32768;
대신 PSQL 콘솔에 그를 입력, 당신은 이러한를 만들 만들 장고 마이그레이션 (A RUNSQL 지시어를 사용)을 편집하는 것이 좋습니다.
다음 단계는 저장 방법에게이 방법을 저장하기위한 덮어
def save(self,*args, **kwargs)
if not self.id :
cursor = connection.cursor()
if small condition:
cursor.execute("select nextval('small')")
else:
cursor.execute("select nextval('big')")
self.id = cursor.fetchone()[0]
super(MyModel,self).save(*args,**kwargs)
대안을 대체하는 INSERT 트리거 PostgreSQL의 BEFORE를 생성하는 것이다. nextval을 얻는 왕복 여행은 비용이 많이 들지는 않으나, 이것이 방아쇠를 만드는 데 관심이 있다면 선택할 수있는 옵션입니다. 이 경우 save 메소드를 사용하지 않아도되지만 트리거 내에서 동일한 로직을 구현해야합니다.