Django queryset.values()를 json으로 시리얼화하려면 어떻게 해야 합니까?
저는 여러 개의 필드가 있는 모델을 가지고 있습니다만, 이 문제는 3개의 필드만 있으면 됩니다.serialize를 하려고 하면.values
set 예외를 받습니다.
'timeout' 개체에 특성 '_timeout'이 없습니다.
코드는 다음과 같습니다.
queryset = myModel.objects.filter(foo_icontains=bar).values('f1', 'f2', 'f3')
serialized_q = serializers.serialize('json', queryset, ensure_ascii=False)
다른 사람들이 말했듯이, Django의 시리얼라이저는 ValuesQuerySet을 처리할 수 없습니다.단, 표준규격을 사용하여 시리얼화할 수 있습니다.json.dumps()
를 사용하여 ValuesQuerySet을 목록으로 변환합니다.list()
10진수 등의 장고 필드가 세트에 포함되어 있는 경우 장고J를 통과해야 합니다.소네코더다음과 같이 됩니다.
import json
from django.core.serializers.json import DjangoJSONEncoder
queryset = myModel.objects.filter(foo_icontains=bar).values('f1', 'f2', 'f3')
serialized_q = json.dumps(list(queryset), cls=DjangoJSONEncoder)
Django 시리얼라이저는 쿼리셋만 직렬화할 수 있으며 쿼리셋은 반환하지 않습니다.ValuesQuerySet
물건.따라서 사용을 피한다.values()
대신 사용할 필드를 지정합니다.values()
serialize 메서드는 다음과 같습니다.
예를 들어 이 SO 질문을 보세요.
objectQuerySet = ConventionCard.objects.filter(ownerUser = user)
data = serializers.serialize('json', list(objectQuerySet), fields=('fileName','id'))
사용하는 대신objectQuerySet.values('fileName','id')
, 를 사용하여 이러한 필드를 지정합니다.fields
파라미터serializers.serialize()
위와 같이
개체에서 목록 만들기QuerySet:
data_ready_for_json = list( ConventionCard.objects.filter(ownerUser = user).values('fileName','id') )
내 해결책은 잘 작동한다.
from django.core.serializers import serialize
import json
permission_list = Permission.objects.all().order_by('-id')
permission_serialize= json.loads(serialize('json', permission_list))
return JsonResponse({'data': permission_serialize})
모든 항목을 받아쓰도록 캐스팅하고 json.dumps를 사용하여 json을 만듭니다.
json.dumps([dict(item) for item in SomeModel.objects.all().values('id', 'title')])
이것을 시험해 보세요.
queryset = myModel.objects.filter(foo_icontains=bar)
serialized_q = serializers.serialize(queryset, many = True)
언급URL : https://stackoverflow.com/questions/7650448/how-to-serialize-django-queryset-values-into-json
'IT' 카테고리의 다른 글
react-testing-library - 화면과 렌더 쿼리 (0) | 2023.02.22 |
---|---|
Redux와 릴레이의 차이점 (0) | 2023.02.22 |
Angular를 만드는 방법JS 명령으로 전파를 중지하시겠습니까? (0) | 2023.02.22 |
구성 요소를 JSX 구성 요소로 사용할 수 없습니다.반환 형식 'Element[]'는 올바른 JSX 요소가 아닙니다. (0) | 2023.02.18 |
동일한 쿼리에서 모든 열과 개수(*)를 선택하는 방법 (0) | 2023.02.14 |