我一直在試圖修改AuditTrail代碼,因此它不會複製ForeignKey
領域,而是拷貝相關領域(即我不想對我的數據庫表的外鍵審計模型)。Django的:審計跟蹤和懶惰的關係
我寫了一個copy_field
功能,看起來像這樣:
def copy_field(field):
while(isinstance(field, models.OneToOneField, models.ForeignKey)):
field = field.rel.get_related_field()
if isinstance(field, models.AutoField):
f = models.IntegerField()
else:
f = copy(field)
#...snip some adjusting of fs attributes...
return f
當製備具有AuditTrail
屬性模型(通過class_prepared
信號)此代碼運行。
然而,這個過程中遇到問題時,ForeignKey
是有關在尚未準備尚未模型的領域中 - get_related_field()
調用將失敗,因爲field.rel.to
是包含了相關模型的名稱的字符串,而不是模型實例。
我不知道該如何解決此問題。在開始複製字段之前,我是否必須確定模型具有哪些依賴關係,並等待它們全部做好準備?任何關於最佳方式的想法?