我有一个模型,它与自身有一个可以为空的外键关系(这个“自我”可以是任何具有这个外键的模型)。此外键是防止循环关系的自定义类。
调用super()
中__init__
包含null=True
,blank=True
因此需要包含在南方的检查规则中。这至少使架构迁移工作,但迁移仍然失败。
以下代码显示:自定义外键、检查规则和使用外键的模型。
# Foreign key
class ParentField(models.ForeignKey)
def __init__(self, verbose_name=None, **kwargs):
super(ParentField, self).__init__('self', verbose_name=verbose_name, null=True, blank=True, **kwargs)
@staticmethod
def checkcyclic(object, attr):
'''Check for a cyclic relationship'''
pass
# Introspection rules
add_introspection_rules([
(
[ParentField],
[],
{
'null': ['null', {'default': True}],
'blank': ['blank', {'default': True}],
}
)
], ["^test\.models\.fields\.ParentField"])
# Model
class Relation(Model):
parent = ParentField(related_name='child_set')
迁移会出现以下错误:
$ ./manage.py migrate
[..]
super(ParentField, self).__init__('self', verbose_name=verbose_name, null=True, blank=True, **kwargs)
TypeError: __init__() got multiple values for keyword argument 'to'
我尝试添加如下规则,但没有任何改变。
'to': ['rel.to', {'default': 'test.models.Relation'}],
谁能告诉我我做错了什么或任何解决方案的提示?