2015-10-17 318 views
5

我想在Django模型中禁用自動創建id。是否有可能這樣做?怎麼樣?如何在Django中禁用自動創建ID?

+0

在您的模型上聲明主鍵(https://docs.djangoproject.com/en/1.8/ref/models/fields/#primary-key)。沒有ID的型號不支持(AFAIK) – Roba

+0

是的,這是可能的。但是如果我只是想爲某件物品存儲用戶之類的東西呢?我不需要那些東西的ID。 –

回答

2

正如答覆中所述,您需要在非AutoField上聲明主鍵。例如:

from django.db import models 

class Person(models.Model): 
    username = CharField(primary_key=True, max_length=100) 
    first_name = CharField(null=True, blank=True, max_length=100) 

請注意,一個字段設置爲自動primary_key=True使得它獨特的,而不是空。祝你好運!

+0

是的,這是可能的。但是如果我只是想爲某件物品存儲用戶之類的東西呢?我不需要那些東西的ID。 –

+0

沒錯,你可能會遇到用例,在你的數據庫表中,你不會用第三種形式的規範化,但是如果你需要這些表作爲模型在Django中暴露出來,你必須這樣做。從你身邊幾乎沒有任何損失,這些字段可以自動管理,你幾乎不會爭論已用空間...... – Roba

+0

它甚至沒有真正暴露給你作爲編碼器,除非你在數據庫中查看它,而且很多可靠性的開銷很小。在數據庫中保存一個唯一的密鑰,多年來我的屁股比我的數量還多。 – FlipperPA

相關問題