Django Tastypie annoate/groupby返回一个“;pk";错误

Django Tastypie annoate/groupby返回一个“;pk";错误,django,tastypie,Django,Tastypie,当使用django的annotate获取“groupby”时,它返回没有PK的对象是有意义的。因为按字段分组没有意义,所以将其他一些字段相加,得到单行PK ID 我想我在tastypie做得不对。但是我从文档中看不到一种进行分组的方法 因此,我在自定义资源类中添加了一个queryparam“groupby”。在“apply_filters”中,我让tastypie做它通常的事情,然后我介入并应用django“groupby”: 这将返回对象的查询集,其中只有“type”字段和正确汇总的字段 我从

当使用django的annotate获取“groupby”时,它返回没有PK的对象是有意义的。因为按字段分组没有意义,所以将其他一些字段相加,得到单行PK ID

我想我在tastypie做得不对。但是我从文档中看不到一种进行分组的方法

因此,我在自定义资源类中添加了一个queryparam“groupby”。在“apply_filters”中,我让tastypie做它通常的事情,然后我介入并应用django“groupby”:

这将返回对象的查询集,其中只有“type”字段和正确汇总的字段

我从tastypie得到的错误是:

    Traceback (most recent call last):  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 228, in wrapper  
    response = callback(request, *args, **kwargs)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 468, in dispatch_list  
    return self.dispatch('list', request, **kwargs)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 500, in dispatch  
    response = method(request, **kwargs)  
  File "/srv/attrib-backend/backend/api/utils.py", line 69, in get_list  
    for obj in to_be_serialized[self._meta.collection_name]  
  File "/srv/attrib-backend/backend/api/utils.py", line 69, in <listcomp>  
    for obj in to_be_serialized[self._meta.collection_name]  
  File "/srv/attrib-backend/backend/api/utils.py", line 114, in full_dehydrate  
    data[field_name] = method(bundle)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 1093, in dehydrate_resource_uri  
    return self.get_resource_uri(bundle)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 837, in get_resource_uri  
    return self._build_reverse_url(url_name, kwargs=self.resource_uri_kwargs(bundle_or_obj))  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 816, in resource_uri_kwargs  
    kwargs.update(self.detail_uri_kwargs(bundle_or_obj))  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 793, 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'  

谢谢你的帮助和指点

TastyPie需要一个模型对象,而不是源于
.values(..)
的字典。是的,我可以看到这一点。但是我正在尝试使用django的groupby——Tastypie如何允许sql等效于“groupby”?您好,您找到解决方案了吗?我也在寻找解决办法。我需要在使用Tastype的api中使用groupby。TastyPie需要一个模型对象,而不是源于
.values(…)
的字典。是的,我可以看到这一点。但是我正在尝试使用django的groupby——Tastypie如何允许sql等效于“groupby”?您好,您找到解决方案了吗?我也在寻找解决办法。我需要在使用tastypi的api中使用groupby
    Traceback (most recent call last):  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 228, in wrapper  
    response = callback(request, *args, **kwargs)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 468, in dispatch_list  
    return self.dispatch('list', request, **kwargs)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 500, in dispatch  
    response = method(request, **kwargs)  
  File "/srv/attrib-backend/backend/api/utils.py", line 69, in get_list  
    for obj in to_be_serialized[self._meta.collection_name]  
  File "/srv/attrib-backend/backend/api/utils.py", line 69, in <listcomp>  
    for obj in to_be_serialized[self._meta.collection_name]  
  File "/srv/attrib-backend/backend/api/utils.py", line 114, in full_dehydrate  
    data[field_name] = method(bundle)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 1093, in dehydrate_resource_uri  
    return self.get_resource_uri(bundle)  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 837, in get_resource_uri  
    return self._build_reverse_url(url_name, kwargs=self.resource_uri_kwargs(bundle_or_obj))  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 816, in resource_uri_kwargs  
    kwargs.update(self.detail_uri_kwargs(bundle_or_obj))  
  File "/usr/local/lib/python3.6/dist-packages/tastypie/resources.py", line 793, 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'  
"The object 
{
    type': 'My Type X', 
    'field_one__sum': 4,
    'field_two__sum': Decimal('1045.76'),
}
has an empty attribute 'type' and doesn't allow a default or null value."