如何从 Django 字段创建自定义字段

How to make custom field from django field

我想让我的自定义字段从 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'

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

class CustomField(models.ForeignKey):

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