我試圖創建一個可調用對象,以在創建新實例時返回用於字段的默認值。爲Field.default創建一個Django可調用對象
該值的邏輯取決於模型中的其他數據。我嘗試創建一個單獨的課程,但沒有找到正確的因素組合。例如:
在models.py:
Class Box(models.Model):
inv_id = models.CharField(max_length=16,default=gen_inv_id())
的調用對象將需要查詢的數據庫模型和增量的表值。我嘗試在應用程序下的單獨.py模塊中創建一個類,但它需要一個方法來返回值。在這一點上,OO並不是我的強項。我認爲這個模型已經失效了,並且這個方法依賴於它,所以它似乎已經出現了雞/雞蛋的情景。
感謝您的任何幫助。
一些其他意見提重寫'save'方法,同時,做工作,它比這更混亂。但是,如果您的默認值需要訪問對象實例(例如,如果您的默認值基於該模型中的某個其他字段),則您將希望覆蓋'save'方法。 – 2012-04-16 22:29:41
這是一個很好的答案。 需要注意的一件事是,運行遷移時引入了具有缺省值的字段,並且表中存在行。在這種情況下,'default'函數只運行一次,並且所有行都會填充相同的值(與實例單獨保存的情況不同)。 要解決: 1.設置字段爲可爲空沒有缺省, 2.運行數據遷移來填充現有的行, 3.設置默認並設置字段不可爲空。 – Geekfish 2016-11-21 12:45:19