2013-06-04 2 views
1

ModelField를 사용하여 JSONField를 직렬화하려고합니다. 'model_field'kwarg에 전달할 것으로 예상되는 것이 무엇인지 확실하지 않습니다. ModelField가 'model_field'를 직접 저장하고 메서드를 호출하는 것처럼 보이기 때문에 클래스 이름을 전달하면 모델 이름이 잘리지 않습니다.DRF ModelField를 올바르게 인스턴스화

== restapi.py == 

    reading_order = ModelField(model_field=JSONField) # Corresponds to a JSONField 'reading_order' in my model. 

== rest_framework/fields.py ModelField == 

def field_to_native(self, obj, field_name): 
    value = self.model_field._get_val_from_obj(obj) 

이렇게하면 첫 번째 인수는 self.model_field가 클래스 정의이므로 JSONField에 대한 인스턴스 여야한다는 오류가 발생합니다. 변경 한 경우 :

def field_to_native(self, obj, field_name): 
    value = self.model_field._get_val_from_obj(obj._meta.get_field(field_name), obj) 

잘 작동합니다.

이 버그가 발생했는지 또는 ModelField를 잘못 인스턴스화했는지 확실하지 않습니다. 누군가 ModelField를 사용하기 위해 올바른 방법을 가르쳐 주시겠습니까?

감사합니다, Abhaya

+0

가이 문제를 저장 직면, 작업 솔루션이있다? – Tzach

+0

위의 두 번째 발췌 문장은 정상적으로 작동합니다. – abhaga

답변

0

는이 문서의 문제 믿습니다. ModelField이 필드 인스턴스가 아닌 필드 클래스를 통과해야한다, 그래서 당신과 같이 모델 필드를 초기화해야합니다

reading_order = ModelField(model_field=JSONField()) 
+0

이것은 올바른 방향입니다. 우리가 모델 인스턴스에서 필드 인스턴스를 추출해야한다면 Django는 오류를 던집니다. 답변을 업데이트하면 동의 할 것입니다. – abhaga

관련 문제