2017-11-23 1 views
0

Django 1.11 사용 ForeignKey에서 상속 한 사용자 정의 모델 필드를 만들고 싶습니다. 내가 주로 외래 키 필드와 동일한 모델 필드를하고 싶습니다, 대신정의 된 모델 클래스에 대한 사용자 정의 Django ForeignKey 필드

class Car(models.Model): 
    manufacturer = models.ForeignKey(Company) 

하지만, 1)을 사용 : 일반 외래 키와

, 당신은 다음과 같은 일을 할 수 있습니다 formfield에 대한 다른 기본 위젯 및 2) 모델 이름을 위치 매개 변수로 지정할 필요가 없습니다.

# myapp/models.py 
from otherapp.fields import ManufacturerField 

class Car(models.Model): 
    manufacturer = ManufacturerField() 

불행하게도, 내가 힘든 시간을 자식 클래스의 초기화 메서드를 재정의하는 데 문제가하는 내 "회사"모델은 혼합에 삽입하세요. 여기에 (모든 아직 위젯에 작동하지 않는) 내가 지금까지 modelfield의 방법으로 무슨이다 : 나는이 작업을 수행 할 때

# 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 클래스를 설정할 수 있습니까? 그렇지 않다면, 초기화 방법을 제대로 모델링 할 수있는 방법에 대한 아이디어가 있습니까?

답변

0

super() 명시 적으로 기본 클래스를 참조하십시오. 당신은 이것을 이해하기 위해 question을 볼 수 있습니다.

def __init__(self, *args, **kwargs): 
    return super(ContentField, self).__init__(Company, **kwargs) 

이어야합니다.

def __init__(self, *args, **kwargs): 
    return super(ManufacturerField, self).__init__(*args, **kwargs) 

여기 사용자 입력란은 example입니다.

관련 문제