모델 개체를 사전으로 변환하는 함수를 만들고 있습니다 (모든 사전에 foreignkeys
을 재귀 적으로 포함). 나는 친구의 모델에서 obj._meta.fields
을보고 필드를 얻을 수 있다고 배웠지 만 어디서나이 문서를 찾을 수 없습니다.개체의 필드를 가져 오는 방법은 무엇입니까?
모델 필드를 얻으려면 어떻게해야합니까? _meta
클래스에서 찾을 수있는 것을 어떻게 해석 할 수 있습니까?
모델 개체를 사전으로 변환하는 함수를 만들고 있습니다 (모든 사전에 foreignkeys
을 재귀 적으로 포함). 나는 친구의 모델에서 obj._meta.fields
을보고 필드를 얻을 수 있다고 배웠지 만 어디서나이 문서를 찾을 수 없습니다.개체의 필드를 가져 오는 방법은 무엇입니까?
모델 필드를 얻으려면 어떻게해야합니까? _meta
클래스에서 찾을 수있는 것을 어떻게 해석 할 수 있습니까?
이것은 꽤 흥미로 보였습니다. 그래서 저는 django.forms 소스를 살펴보고 ModelForm 구현을 특별히 살펴 보았습니다. 나는 ModelForm이 주어진 인스턴스를 인트로 스페 팅하는 것에 상당히 능숙 할 것이라고 생각했다. 그리고 당신의 방법으로 당신을 도울 수있는 편리한 함수가 있다는 것을 알았다. 그 는 내부 구현 세부 사항 때문에
>>> from django.forms.models import model_to_dict
>>> from django.contrib.auth.models import Group
>>> g = Group.objects.filter()[0]
>>> d = model_to_dict(g)
>>> d
{'permissions': [40, 41, 42, 46, 47, 48, 50, 43, 44, 45, 31, 32, 33, 34, 35, 36, 37, 38, 39], 'id': 1, 'name': u'Managers'}
>>>
이해할 상기 _meta
특성 문서화된다. 나는 언제든지 그것을 바꿀 수는 없으므로 사용하는 것이 상대적으로 안전 할 것이다. 위의 model_to_dict
함수를 사용하여 원하는 작업을 수행 할 수 있습니다. 많은 변화가 없어야합니다. 재귀 적으로 모델을 포함 할 계획이라면 역관계를 조심하십시오.
조사하려는 또 다른 방법이있을 수 있습니다. django-piston
은 유용 할 수도있는 emitters
몇 가지를 선언하는 RESTful 프레임 워크, 특히 BaseEmitter.construct()
메소드입니다. RESTful 직렬화 이외의 용도로 사용하는 DictionaryEmitter
을 쉽게 정의 할 수 있어야합니다.
There's some docs on it 등이 있지만 대부분 내부적으로 사용되는 django 함수 (예 : _meta.fields
또는 _meta.get_all_field_names()
, _meta.get_field_by_name
)를 사용하는 경향이 있습니다.
나를 위해, 이것들은 iPython과 탭 완료를 통해 가장 잘 발견됩니다. 또는 출처.
오, nice,'model_to_dict '기본적으로 내 기능이 무엇을하고 있었는지 (나는'objectToDict'라고 불렀다.) 편집해라. 아, 그건 내가하고 싶은 foreignekys를 따르지 않는다. 나는 그걸 불러서 그것의 모습을 볼 수 있다고 생각한다. 필드지만, 이미'_meta' 필드로 썼습니다. 그래서주기를 잡는 데 대한 팁을 주셔서 감사합니다. func로 처리했습니다. (이미 객체를 보았을 때 반복적으로 대신 결과를 사용합니다.) – Claudiu
아니요, FK를 따르지 않지만 model_to_dict로 재귀 적으로 각 foreign_key_id를 대체 할 수 있습니다. 이미 작동 했으므로 걱정하지 않아도됩니다. 앞서 언급했듯이 model_to_dict는 시작 도구로 사용될 수 있지만, 그에 따라 적응된다. –