tastypie查询集值
我有这个tastypie资源:tastypie查询集值
class TagResource_min(ModelResource):
class Meta:
queryset=Question.objects.values('text', 'id')
当我做到这一点我有错误:
{
"error_message": "'dict' object has no attribute 'pk'",
"traceback": "
Traceback (most recent call last):
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 219, in wrapper
response = callback(request, *args, **kwargs)
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 450, in dispatch_list
return self.dispatch('list', request, **kwargs)
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 482, in dispatch
response = method(request, **kwargs)
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 1340, in get_list
for obj in to_be_serialized[self._meta.collection_name]
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 1340, in <listcomp>
for obj in to_be_serialized[self._meta.collection_name]
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 895, in full_dehydrate
data[field_name] = method(bundle)
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 1068, in dehydrate_resource_uri
return self.get_resource_uri(bundle)
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 819, in get_resource_uri
return self._build_reverse_url(url_name, kwargs=self.resource_uri_kwargs(bundle_or_obj))
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 798, in resource_uri_kwargs
kwargs.update(self.detail_uri_kwargs(bundle_or_obj))
File \"/home/will/agora/env/lib/python3.5/site-packages/tastypie/resources.py\", line 775, in detail_uri_kwargs
kwargs[self._meta.detail_uri_name] = getattr(bundle_or_obj, self._meta.detail_uri_name)
AttributeError: 'dict' object has no attribute 'pk'"
}
的'dict'
它指的是必须在查询集获得通过Question.objects.values('text', 'id')
。当我登录到外壳,并要求Question.objects.values('text', 'id')
我有以下几点:
<QuerySet [{'text': 'Why does capillary action take place?', 'id': 1}, {'text': "If a human brain was connected to a fish's body, how would the humans thoughts change?", 'id': 2},...
什么我用objects.values()
做错了什么?如何使用objects.values()
显示新的查询集?
EDIT当我使用Question.objects.values()
它返回的dict
阵列不具有该属性dict.pk
。但是当我做Question.objects.all()
它返回一个ModelResource
类型的数组,当我呼叫ModelResource.pk
时,它们都返回一个整数。
这个信息不是很有用......哈哈。因为我确信解决方案在于tastypie或django库。尽管如此,如果我能想出一种方法将pk附加在能解决我的问题的字典上。
values()
方法返回一个返回字典而不是模型实例的查询集。模型实例具有pk
属性,但字典没有。 Tastypie试图在字典中访问pk
,从而导致错误。您需要使用返回给模型实例的查询集的方法。
从Django's documentation使用values()
:
when you know you’re only going to need values from a small number of the available fields and you won’t need the functionality of a model instance object.
在你的情况,你确实需要模型实例对象的功能,pk
属性。
我建议使用Question.objects.all()
谢谢,虽然这是更大问题的一部分。我不需要使用values()函数,但我确实需要某种方法将'queryset'更改为一组标记而不是问题。 – Tsangares
使用值是解决我在这里引用的更大问题的解决方案:http://*.com/questions/41325395/finding-most-popular-tag-taggit-tastypie-django – Tsangares
虽然,经过反思,似乎我要走了关于这一切都错了。你引用了django的文档说:“当你知道你只需要少数人的价值。”那么我都需要模型的功能,这将是大量的可用字段。好像你的回答是正确的。 – Tsangares
你能否提供堆栈跟踪? –
我用追溯更新了它。并添加了评论。 – Tsangares
谢谢@Evans修复追踪,并添加我的评论。 – Tsangares