django에서 json 직렬화를 제어하는 방법이 있습니까? 간단한 코드가 아래 JSON에 직렬화 된 객체를 반환합니다django : json serialization 제어
이co = Collection.objects.all()
c = serializers.serialize('json',co)
json으로이 유사합니다 :
[
{
"pk": 1,
"model": "picviewer.collection",
"fields": {
"urlName": "architecture",
"name": "\u0413\u043e\u0440\u043e\u0434 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430",
"sortOrder": 0
}
},
{
"pk": 2,
"model": "picviewer.collection",
"fields": {
"urlName": "nature",
"name": "\u041f\u0440\u0438\u0440\u043e\u0434\u0430",
"sortOrder": 1
}
},
{
"pk": 3,
"model": "picviewer.collection",
"fields": {
"urlName": "objects",
"name": "\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u043d\u0430\u0442\u044e\u0440\u043c\u043e\u0440\u0442",
"sortOrder": 2
}
}
]
당신은 당신이 할 수있는 방식으로 그것을 직렬화있어 볼 수를 다시 작성 전체 모델에서, 어떤 시점에서 이것을하고 싶습니까? 제 경우에는 단순한 JS 아약스에 대해서는별로 유용하지 않지만, 트래픽을 최소화하고 모든 것을 조금 더 명확하게 만들고 싶습니다.
[
{% if collections %}
{% for c in collections %}
{"id": {{c.id}},"sortOrder": {{c.sortOrder}},"name": "{{c.name}}","urlName": "{{c.urlName}}"}{% if not forloop.last %},{% endif %}
{% endfor %}
{% endif %}
]
이 수행 작업과 출력 : 내가 무슨 짓을
내가 "더 좋은"JSON 출력을 생성하기 위해 .json 템플릿과 같은 것을 할 것입니다 템플릿 객체를 전달하는 뷰를 생성 훨씬 더 좋은 (?) : 그러나, 나는 내 솔루션 템플릿 (처리 가능한 성능에 미치는 영향에 추가 단계)를 사용하고 내가 개정하고 유지하기 위해 수작업을 할 것이라는 빠른에 의해 방해하고있어
[
{
"id": 1,
"sortOrder": 0,
"name": "Город и архитектура",
"urlName": "architecture"
},
{
"id": 2,
"sortOrder": 1,
"name": "Природа",
"urlName": "nature"
},
{
"id": 3,
"sortOrder": 2,
"name": "Объекты и натюрморт",
"urlName": "objects"
}
]
예를 들어, 모델.
나는 json 생성이 모델의 일부가되어야한다고 생각하고있다. (내가 틀렸다면 나에게 맞춰라.) 원시 python-json과 django 구현으로 끝났지 만, 비트 조각을 제거하는 방법을 생각할 수 없다. 원하지 않아.
한 가지 더요 - 직렬화 할 일련의 필드를 제한하는 경우에도 요소 컨테이너 외부에 항상 ID를 유지하고 그 대신에 ID 필드를 "pk"로 표시합니다.
이 배열에 대해 작동하지만 장고 모드는이 방식으로 직렬화 할 수 있다고 생각하지 않습니다. – abolotnov
필자는 그가 원하는 모델 객체의 필드를 list 나 dict 같은 JSON 직렬화 가능 유형으로 복사해야 함을 의미한다고 생각합니다. 'obj = Collection.objects.get (pk = 1); simplejson.dumps (dict (urlName = obj.urlName, name = obj.name, sortOrder = obj.sortOder)'. 그러나 [다른 사람의 대답]처럼 (http://stackoverflow.com/questions/5129794/django- control-json-serialization/5130423 # 5130423), 피스톤이 당신을 위해이 단계를 수행 할 수 있습니다 :) – Bluu
일부 수동 사전 처리로 다소 효과가 있습니다 - 일부 모델 필드는 simplejson에 의해 직렬화 할 수 없으며 변환해야합니다 문자열에 :( – abolotnov