【发布时间】:2016-01-31 23:40:00
【问题描述】:
我想在查询集的开头添加一个列表对象。
我的 ListAPIView 有以下代码:
def get_queryset(self):
obj1 = Books.objects.most_read_offset()[:30]
titles = Category.objects.most_publishes().values('title')
categories = []
for title in titles:
categories.append(title)
categories.insert(0, {'title': 'Popular'})
return chain(categories, obj1)
在我的序列化器中,我使用以下方法获取类别 url:
def get_category_url(self, obj):
request = self.context['request']
kwargs = {'slug': obj.category.slug}
return api_reverse('category_detail_api', kwargs=kwargs,
request=request)
当我尝试编译代码时,我收到一条错误消息:'dict' object has no attribute 'category'。
有人知道怎么解决吗?
编辑:
这是我希望最终结果的样子:
[
{
"titles": "title_1", "title_2", "title_3",
},
{
"id": 62,
"category_url": "http://127.0.0.1:8000/categories/just-because/",
"slug": "XG84Jberu6",
},
{
"id": 63,
"category_url": "http://127.0.0.1:8000/categories/something/",
"slug": "YU65Zirvq7",
},
]
【问题讨论】:
-
看起来你的
get_queryset函数返回了一个迭代器,它返回三种不同的类型——首先是字典,然后是 str 值,然后是 Book 值。你确定这是你想要的吗? -
@PenguinBrian 我刚刚添加了一个编辑以显示我希望最终结果的样子。但是我们可以做到这一点:)
标签: django django-rest-framework django-queryset