我有一個模型,我想包含主題名稱和它們的首字母縮寫。 (該數據在一定程度上匿名和縮寫跟蹤。)Django模型字段默認基於在同一模型中的另一個字段
現在,我寫
class Subject(models.Model):
name = models.CharField("Name", max_length=30)
def subject_initials(self):
return ''.join(map(lambda x: '' if len(x)==0 else x[0],
self.name.split(' ')))
# Next line is what I want to do (or something equivalent), but doesn't work with
# NameError: name 'self' is not defined
subject_init = models.CharField("Subject Initials", max_length=5, default=self.subject_initials)
如最後一行表示,我希望能夠有縮寫實際上得到存儲在數據庫作爲字段(與名稱無關),但是該名稱會根據名稱字段使用默認值進行初始化。但是,由於Django模型似乎沒有「自我」,所以我遇到了問題。
如果我改變行subject_init = models.CharField("Subject initials", max_length=2, default=subject_initials)
,我可以做執行syncdb,但不能創建新的對象。
這是可能在Django,具有可調用的函數給出了基於另一個字段的值默認爲一些領域? (好奇的是,我想分開分開我店鋪名字的原因很罕見,奇怪的姓氏可能與我追蹤的姓氏不同,例如,其他人認爲主題1命名爲「John O」馬洛裏」的縮寫是‘JM’,而不是‘JO’,並希望修復編輯它作爲一個管理員)
您導入了```post_save```而不是```pre_save```。 – arkocal 2015-06-19 09:07:12