2016-12-15 47 views
0

我从我的视图返回一个json对象到我的客户端。Django - queryset值为相同模型的每个类别多次返回相同的模型

因此,为了保持代码尽可能简单,这里是我做的:

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'])] 

,一类是由我创造了一个多对多模式场,译本是从Django的parler一个多对多。

因此,你知道“concat”的解决方案吗?或者我必须手动执行它? 我试过了values_list,但是回报是一样的。

编辑:直到调用.values,模型查询都是唯一的。

回答

1

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

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

+0

好的,我的确只是在“第三个灵感”上。但是当我想要将所有类别链接到它时,它只包含“category2”。 –

相关问题