使用Django 1.11我想创建一个继承自ForeignKey的自定义模型字段。
使用普通的ForeignKey,您可以执行以下操作:
class Car(models.Model):
manufacturer = models.ForeignKey(Company)
相反,我想创建一个与ForeignKey字段大致相同的模型字段,但是1)对表单字段使用不同的默认窗口小部件,2)不要求将模型名称放置为位置参数。
# myapp/models.py
from otherapp.fields import ManufacturerField
class Car(models.Model):
manufacturer = ManufacturerField()
不幸的是,我很难重写子类的 init 方法,以便将我的“公司”模型插入到混合中。这是我到目前为止通过一个modelfield的方式(还没有在widget上工作):
# otherapp/fields.py
from otherapp.models import Company
class ManufacturerField(models.ForeignKey):
def __init__(self, *args, **kwargs):
return super(ContentField, self).__init__(Company, **kwargs)
当我尝试这样做时,我得到:
TypeError: Couldn't reconstruct field manufacturer on myapp.Car: __init__() got multiple values for argument 'to'
我是否可以在自定义modelfield类上设置一个属性来指定我希望这是一个特定模型的外键?如果没有,关于我如何正确拦截 init 方法以提供给我的模型的任何想法?