我正在將來自php應用程序的MySQL數據庫集成到新的Django項目中。 Inspectdb運行良好,我只需要將幾個字段更改爲ForeignKeys,現在所有讀取和編輯當前數據的工作都很好。Django - 遺留數據庫和'id'字段的問題
問題是當我嘗試創建新條目時,出現錯誤"Field 'id' doesn't have a default value"
。回溯從form.save()
調用開始,異常來自MySQL光標。在大多數情況下,列被命名爲id
但在一個情況下,它是一個名爲值:
class ModelOne(models.Model): #normal "id" named pk
id = models.AutoField(primary_key=True, db_column='id', default=None)
other_fields = ...
class ModelTwo(models.Model): #specific pk
named_pk = models.AutoField(primary_key=True, db_column='named_pk',
default=None)
other_fields = ...
對於ModelTwo,當我發佈一個有效的形式,我得到的錯誤,但以後我回到我的數據列表,新項目顯示!在我檢查了shell中最新的id
值後,我可以看到它們正在遞增。
但是對於ModelOne(只有id
),錯誤仍然顯示,並且pk變爲2147483647(最大值),並且後續保存由於重複的id而失敗。 (下一個最高PK只有62158)
我需要做些什麼才能讓這些ID字段正常工作?
更新:仍然沒有運氣修復此。考慮轉儲數據並將其導入新的,Django構建的表格。仍在尋找解決這個問題的辦法。
UPDATE2:從數據庫外殼 信息
ModelOne:
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
ModelTwo:
+-------------+--------------+-------+------+---------+-----------------+
| Field | Type | Null | Key | Default | Extra |
| named_pk | int(11) | NO | PRI | NULL | auto_increment |
如果刪除了'默認會發生什麼=無'? –
@Daniel Roseman - 同樣的事情。我只是試圖直接解決錯誤指向的錯誤 –