我将json对象从我的视图返回到我的客户端。
因此,为了使代码尽可能简单,我就是这样做的:
def get(self, request, *args, **kwargs):
inspirations = Inspiration.objects.active_translations(get_language()).filter(publish=True)
inspirationsFilter = inspirations.values('translations__title',
'translations__slug', 'categories__translations__name', 'main_image__file')
data = JsonResponse(list(inspirationsFilter), safe=False)
return HttpResponse(data, status=200, content_type='application/json')
但我在这里遇到的问题是这个问题,来自只有类别和标题的印刷品:
[('First Inspiration!', 'category1'), ('Hey max how are you', 'category2'), ('A third inspiration', 'category1'), ('A third inspiration', 'category2')]
如你所见,"第三个灵感"有两个相关的类别,因此它返回每个类别的项目。
我想要的是类似的东西:
...('A third inspiration', ['category1', 'category2'])]
categories是由我创建的ManyToMany模型字段,翻译是来自django-parler的ManyToMany。
因此,你知道" concat"的解决方案吗?它?或者我必须手动完成吗? 我已经尝试过values_list,但回报是一样的。
编辑:在调用.values之前,模型查询是唯一的。
答案 0 :(得分:1)
由于(隐式)加入到翻译表,您会看到重复的行。
This is actually noted in Parler's readme - 请尝试添加.distinct('id')
。