Django Rest Framework (rest_framework_mongoengine과 함께)를 사용하고 내 serializer의 to_representation()을 재정의하여 내 자신의 맞춤 JSON 객체를 다시 전송합니다. 모든 것이 잘 작동하지만 JSON 필드의 순서가 엉망입니다. JSON 객체를 다시 정렬/재구성하는 방법을 알려주십시오. 시리얼 라이저는 다음과 같습니다장고 Rest 프레임 워크 - json 응답을 재구성하는 방법?
class PharmacySerializer(DocumentSerializer):
bank_account = serializers.DictField(child=serializers.CharField(), required=False)
class Meta:
model = Pharmacy
fields = (
'id', 'name', 'email', 'mobile', 'address_line_1', 'address_line_2',
'city', 'state', 'zip', 'created_by', 'created_on', 'last_updated_by', 'license_number',
'bank_account', 'last_updated_on', 'is_email_verified', 'is_mobile_verified', 'is_active')
read_only_fields = ('created_by', 'created_on', 'last_updated_by', 'last_updated_on', 'is_active')
def to_representation(self, pharmacy):
return {
'id': str(pharmacy.id),
'name': pharmacy.name,
'email': pharmacy.email,
'mobile': pharmacy.mobile,
'address_line_1': pharmacy.address_line_1,
'address_line_2': pharmacy.address_line_2,
'city': pharmacy.city,
'state': pharmacy.state,
'zip': pharmacy.zip,
'created_by': pharmacy.created_by,
'created_on': pharmacy.created_on,
'last_updated_by': pharmacy.last_updated_by,
'license_number': pharmacy.license_number,
'bank_account': {
'bank_name': pharmacy.bank_account.bank_name,
'account_number': pharmacy.bank_account.account_number,
'account_type': pharmacy.bank_account.account_type
},
'last_updated_on': pharmacy.last_updated_on,
'is_email_verified': pharmacy.is_email_verified,
'is_mobile_verified': pharmacy.is_mobile_verified,
'is_active': pharmacy.is_active
}
내가 얻고 있다는 반응이다 :
[
{
"city": "City",
"name": "Some Pharmacy",
"zip": "778372",
"mobile": "9880082229",
"license_number": "SP22",
"is_mobile_verified": false,
"is_active": true,
"created_on": "2016-06-18T19:01:02.901",
"created_by": null,
"email": "[email protected]",
"state": "State",
"last_updated_by": null,
"is_email_verified": false,
"last_updated_on": "2016-06-18T19:01:02.901",
"address_line_2": null,
"id": "57659a6ea3b6561c0f20265e",
"bank_account": {
"bank_name": "HSBC",
"account_type": "Savings",
"account_number": "663822553"
},
"address_line_1": "Address"
}
]
가 나는 그것이 to_representation의 반환 DICT()
['OrderedDict'] (https://docs.python.org/2/library/collections.html#collections.OrderedDict)를 사용해 보셨습니까? – gdlmx
작동하지 않았다 : ( – heaVenShaker
@heaVenShaker'to_representation()'메서드를 재정의하는 특별한 이유가 있나? DRF가 정상적으로 반환 할 객체의 속성에 액세스하고있을 때 그렇게 할 필요가 없다고 생각합니다. 재정의하지 않고 주문한 응답을받을 수 있습니다. –