2017-03-27 2 views
0

장고 ORM은 레코드 삽입 중에 특수 SQL 트리거로 DB에서 생성되는 ID를 해석하지 않습니다. ID없이 모델을 저장하면 올바르게 저장되고 DB에 ID가 있습니까? 그러나 m.idNone을 돌려줍니다.DB에서 SQL 스크립트로 생성되는 ID (장고 ORM)를 해결하는 방법

class SomeModel(Model): 
    id = IntegerField(primary_key=True) 
    name = CharField(null=False, max=50) 

m = SomeModel(name='asd') 
m.save() 
m.id # - None 

저장 후 자동 생성 된 ID를 어떻게 해결할 수 있습니까? 아니면 save() 방법을 다시 쓸 수 있습니까? 아니면 필드 유형을 변경할까요?

IDENTITY 대신 자체 트리거를 사용해야합니다.

+1

왜 'id'필드를 IntegerField로 정의 했습니까? 사실 장고가 자동으로 그렇게하기보다는 왜 그것을 정의 했는가? –

+0

@DanielRoseman ID 이름을 알아야하기 때문에 마이 그 레이션에서 사용 (ID를 생성하는 트리거를 추가) –

+0

그러나 장고는 트리거에 대해 알지 못하므로 필드가 db로 채워지는지 알지 못합니다. . –

답변

0

장고 문서를 읽으십시오. 기본적으로 Django는 기본 키를 말할 필요가 없습니다. 하지만 원한다면.

class SomeModel(Model): 
    id = models.AutoField(primary_key=True, db_index=True) 
    name = CharField(null=False, max=50) 
+0

AutoField는 IDENTITY (1, 1)을 추가하지만 대신에 트리거를 사용해야합니다. –