2011-03-01 4 views
2

Django 결과 객체에 하나 또는 두 개의 속성을 추가하려고합니다. 나는 파이썬 기술에 상당히 약하다. 그래서 여기에 우리가 간다.Django에 객체 추가하기 결과 객체

내가하고 싶은 :

products = Product.objects.all() 
products.totalPages = 10 
products.currentPage = 1 
data = serializers.serialize('json', products) 

totalPages 및 currentPage 속성을 추가하려고하지 않고,이 코드는 잘 작동합니다. 하지만 클라이언트에 멋진 JSON 객체를 전달할 수 있도록 이러한 속성을 추가하고 싶습니다.

의견이 있으십니까?

+0

'데이터 = serializers.serialize ('JSON'제품)은 '반환' 목록 "...이 여분의 속성을 어디에서 원하는지 확실하지 않습니다. –

답변

6

당신이 그 attrs에이 수익을 직렬화하는 "목록"에 가고 싶은 곳 확실하지. http://docs.djangoproject.com/en/dev/topics/db/aggregation/

업데이트 :

import json 

from django.core import serializers 

products = Product.objects.all() 
# data is a python list 
data = json.loads(serializers.serialize('json', products)) 
# d is a dict 
d = {} 
# data is a list nested in d 
d['results'] = data 
# more keys for d 
d['totalPages'] = 10          
d['currentPage'] = 1 
# data is a json string representation of the dict 
data = json.dumps(d)          

은 어쩌면 당신은 집계 및 주석에 사용을 찾을 수 있습니다 어쩌면 당신은 최종 결과의 핵심에 있어야 할 데이터를하고자하는 것으로 기본 시리얼의 동작은 그렇지 않을 수도 너가 원하는거야. django.utils.simplejson.encoder의 코드는 고도로 최적화되어 있지만 사용자 정의 속성 등을 어떻게 사용하게 할 것인지 잘 모르겠습니다. 과거에는 인스턴스의 데이터를 내가 원하는 것을 포함하는 dict로 변환하는 모델 클래스에 메소드/속성을 방금 만들었습니다. 대신

data = json.loads(serializers.serialize('json', products)) 

의 그래서, 당신은 (제공 당신이 방법, 제품에 as_dict 정의) 사용할 수 있습니다

data = [p.as_dict() for p in products] 
+0

이것은 모든 제품에 대해 하나의 항목을 추가합니다. json 객체에 모든 제품에 대해 profit이라는 속성을 표시해야한다면 어떤 논리를 기반으로 각 제품 항목의 수익을 계산할 수 있습니까? – mohi666

+0

@ mohi666, 귀하의 케이스에 대한 답변을 업데이트했습니다. –

0

어둠 속에서 검증되지 않은 샷 ...

data = serializers.serialize('json', {'total':10,'current':1,'products':list(products)}) 
+0

나는 그것도 생각했지만 실제로 시도해 보았고, 시리얼 라이저는 장고 모델 만 지원한다. – tangentstorm

+0

너무 늦었지만 "list"를 통해 queryset을 django 모델로 변환해야한다면 어떨까요? 업데이트 된 답변보기 –