2015-05-02 3 views
1

Я хочу, чтобы мое пользовательское поле простиралось от внешнего ключа django.Как создать настраиваемое поле из поля 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' 
+0

Он должен работать, вы уверены, что вызываете 'CustomField (type =" test ")'? Каково содержание 'args' и' kwargs'? – aumo

ответ

1

Проблема заключается в том, что ваш отправляет параметр to, используемого models.ForeginKey в self и в параметре «User», когда вы делаете позвонить 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) 
Смежные вопросы