Im은 ValuesQuerySet 객체를 json 데이터로 직렬화 할 수 없습니다.이 간격에 대한 여러 솔루션을 찾았지만 외부 키 값을 따라야하기 때문에이 경우가 다릅니다.django에서 ValuesQuerySet 객체를 json으로 직렬화하는 동안 발생하는 문제
from task_manager.models import UserTasks
data=UserTasks.objects.filter(user__username="root",server_id=2).values("server_id__mnemonic")
이전 쿼리는 다음과 같이 반환
>>> print data
[{'server_id__mnemonic': u'lol'}, {'server_id__mnemonic': u'lol'}, {'server_id__mnemonic': u'lol'},.......]
을하지만 JSON 형식으로 직렬화하려고 할 때 다음 예외 제기
>>> json_data = serializers.serialize('json',data)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python27\lib\site-packages\django\core\serializers\__init__.py", line 122, in serialize
s.serialize(queryset, **options)
File "C:\Python27\lib\site-packages\django\core\serializers\base.py", line 45, in serialize
concrete_model = obj._meta.concrete_model
AttributeError: 'dict' object has no attribute '_meta'
>>> type(data)
<class 'django.db.models.query.ValuesQuerySet'>
I've이 발견을 공식 Django 매뉴얼 says : 필드의 하위 집합 만 serialize하려는 경우 serializer에 fields 인수를 지정할 수 있습니다.
from django.core import serializers
data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))
그러나이 코드를 사용하면 원하는 외래 키 값을 가져올 수 없습니다.
감사
좋아, 고마워. 첫 번째 솔루션으로 문제를 해결할 수 있습니다. 그러나 두 번째 것은 외래 키 값을 표시하지 않습니다. 어쨌든 고마워 ;-) – user3750102