2016-06-14 44 views
0

我有3种型号,从一个抽象的模型继承:Django的继承:我想添加一个新的孩子,而是修改现有

class ParentModel(models.Model): 
    field_pk = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID', default=0) 
    fieldone = CharField() 
    fieldtwo = CharField() 

    class Meta: 
     abstract = True 
... 

class Child1(ParentModel): 
     MyField1 = CharField() 
... 

class Child2(ParentModel): 
     MyField2 = CharField() 
... 

class Child3(ParentModel): 
     MyField3 = CharField() 
... 

在Django管理,当我尝试添加一个实例的三个孩子中的一个,它修改了现有的一个。
有人可以向我解释为什么会发生这种情况以及如何解决这个问题?

+3

你所说的“修改现有的”是什么意思?请举个例子! –

+0

我的数据库中只有一个对象,当我尝试添加另一个对象时,它修改了db中唯一的对象。 – abdoBim

+0

如果主键字段填入(并存在),Django ORM将保存现有记录。主键使用什么字段?你确定它没有被填充? – Ward

回答

0

我猜:你定义的默认主键“0”,当你在管理页面编辑你的模型此值回升。相同的主键将保存到相同的条目。你也许应该离开default选择出来,并留下Django的/你的数据库,生成一个ID

+0

谢谢,这很好,但我不明白为什么有时Django强加给主键字段的默认值! – abdoBim

+0

它没有多大意义,是吗?主键应该是唯一的。你想用默认值存档什么?我相信会有更好的方法:) – Ward

+0

我并没有试图给出一个默认值,但是在应用迁移时它需要一个默认值! – abdoBim

相关问题