Django - queryset值为同一模型的每个类别多次返回相同的模型

时间:2016-12-15 11:47:18

标签: python django django-queryset

我将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之前,模型查询是唯一的。

1 个答案:

答案 0 :(得分:1)

由于(隐式)加入到翻译表,您会看到重复的行。

This is actually noted in Parler's readme - 请尝试添加.distinct('id')