我一直在试图修改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
是包含了相关模型的名称的字符串,而不是模型实例。
我不知道该如何解决此问题。在开始复制字段之前,我是否必须确定模型具有哪些依赖关系,并等待它们全部做好准备?任何关于最佳方式的想法?