我无法将 ValuesQuerySet 对象序列化为 json 数据,i\xc2\xb4ve 找到了解决此差距的多种解决方案,但这种情况有所不同,因为我需要遵循外键值。
\n\nfrom task_manager.models import UserTasks\ndata=UserTasks.objects.filter(user__username="root",server_id=2).values("server_id__mnemonic")\nRun Code Online (Sandbox Code Playgroud)\n\n前面的查询返回类似这样的内容:
\n\n>>> print data\n[{\'server_id__mnemonic\': u\'lol\'}, {\'server_id__mnemonic\': u\'lol\'}, {\'server_id__mnemonic\': u\'lol\'},.......]\nRun Code Online (Sandbox Code Playgroud)\n\n但是当我尝试将其序列化为 JSON 格式时,会引发下一个异常:
\n\n>>> json_data = serializers.serialize(\'json\',data)\nTraceback (most recent call last):\n File "<console>", line 1, in <module>\n File "C:\\Python27\\lib\\site-packages\\django\\core\\serializers\\__init__.py", line 122, in serialize\n s.serialize(queryset, **options)\n File "C:\\Python27\\lib\\site-packages\\django\\core\\serializers\\base.py", line 45, in serialize\n concrete_model = obj._meta.concrete_model\nAttributeError: \'dict\' object has no attribute \'_meta\'\n>>> type(data)\n<class \'django.db.models.query.ValuesQuerySet\'>\nRun Code Online (Sandbox Code Playgroud)\n\nI\xc2\xb4ve 在 Django 官方手册中找到了一个解决方案:如果您只想序列化字段的子集,则可以为序列化器指定一个 fields 参数:
\n\nfrom django.core import …Run Code Online (Sandbox Code Playgroud)