2016-06-14 25 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

相關問題