2017-03-27 22 views
0

Django ORM不解析在插入记录时使用特殊SQL触发器在DB中生成的id。 当我保存没有ID的模型时,它会正确保存并在ID中有ID?但m.id返回我None如何解决在DB上使用SQL脚本生成的ID(Django 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?事实上,你为什么要定义它,而不是让Django自动地这样做? –

+0

@DanielRoseman,因为我需要知道ID名称来使用它在迁移(即添加触发器,生成ID) –

+0

但Django不知道你的触发器,所以它不知道该字段将由db填充。 –

回答

0

请阅读Django文档。默认情况下,你不需要对Django说什么是主键。但如果你想。

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

AutoField添加了IDENTITY(1,1),但我需要使用我的触发器来代替它。 –

相关问题