0
我有以下型號定義:Django管理默認隨機ID更改之前保存
def _createHashID():
return uuid.uuid4().hex[:8] # 8 chars OK for < 100k items
class Act(models.Model):
hashid = models.CharField(
'hashid',
max_length=20,
default=_createHashID,
unique=True,
primary_key=True,
help_text="technical identifier")
然而,當我使用管理網站,以便創建Act
項目,如果hashid
值是隻讀的,產生價值一次生成表單時,在保存Act
對象時重新生成值。這意味着Add an Act
頁面將首先出現的標識符,說583a95de
,但我們我打救,它會告訴我:
The act "0b8c2832" was added successfully.
如果如果刪除admin.ModelAdmin
對象的readonly
屬性,則hashid
處於輸入(I顯然不希望那樣),但建議的值如果是真實的hashid
的新對象。
第一次實例化對象(創建表單)時,如何生成只讀hashid
並確保它確實是保存時使用的對象?
超出這個問題的是我不能使用內聯formset,因爲pk在保存時間被改變!
感謝蒂姆這個很好的答案,可以工作。然而,這將允許用戶選擇哈希值,因爲我們無法控制它沒有被修改,就像你鏈接的問題一樣。你有一個想法如何防止? – Zack4 2014-10-30 19:00:07
簡而言之,你將無法做到。該值未存儲在服務器上。它只會存在於客戶端。你也可以有一個隱藏的領域,你可以比較它,但也可以改變。 – schillingt 2014-10-30 19:45:11