序列化classmethods當我嘗試在Django的1.7運行manage.py makemigrations
,我得到以下錯誤:在Django 1.7
ValueError: Cannot serialize: <bound method ModelBase.get_default of <class 'printapp.models.JobConfiguration'>>
There are some values Django cannot serialize into migration files.
For more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing
因此,它看起來像有與方法get_default
是對JobConfiguration
定義,其定義是一個問題重複如下:
@classmethod
def get_default(cls):
result = cls()
result.save()
return result
繼link that was provided in the error message,它看起來像序列化「類引用」是一個支持的功能。
「類參考」與@classmethod
相同嗎?
我該如何在「模塊的頂級範圍」中放置「類參考」?
爲什麼必須通過遷移來跟蹤方法?我的假設是遷移是針對數據庫模式的,它只跟蹤存儲的數據類型,而不是類使用的方法類型。
有意思的是:將get_default
的定義更改爲靜態方法,下面重複解決了這個問題,但代價是必須對JobConfiguration
類名進行硬編碼。
@staticmethod
def get_default():
result = JobConfiguration()
result.save()
return result
(一些上下文:此方法被引用作爲JobConfiguration.get_default
從models.OneToOneField(JobConfiguration, default=JobConfiguration.get_default)
內與創建用於創建這些字段中的每一個新的JobConfiguration的效果)
出於興趣,這會給你什麼'JobConfiguration.objects.create()'?這仍然是一個命令,幾乎沒有更多的打字。 – 2014-09-20 08:08:47
呵呵,我沒有意識到這種方法是可用的。我可能會在我的代碼中更改它,但我仍然有興趣知道代碼爲什麼會失敗。 – Z1MM32M4N 2014-09-21 09:05:38