如何从django字段制作自定义字段

时间:2015-05-02 05:11:21

标签: python django django-models

我想从django外键扩展我的自定义字段。

class CustomField(models.ForeignKey):
   def __init__(self, *args, **kwargs):
      self.type=kwargs.pop('type', None)
      super(CustomField, self).__init__(*args, **kwargs)

我正在使用

CustomField('User', type="test")

这是正常的,但我想在我的字段中硬编码模型名称,如此

super(CustomField, self).__init__('User', *args, **kwargs)

以便我可以使用

CustomField(type="test")

然后我收到此错误

__init__() got multiple values for keyword argument 'to'

1 个答案:

答案 0 :(得分:1)

问题是,当您拨打to时,您正在self和'User'参数中发送models.ForeginKey使用的super(CustomField, self).__init__('User', *args, **kwargs)参数。您可以尝试这样做:

class CustomField(models.ForeignKey):

    def __init__(self, *args, **kwargs):
        kwargs['to'] = 'User'
        self.type = kwargs.pop('type', None)
        super(CustomField, self).__init__(*args, **kwargs)