2016-12-15 46 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」。 –

相關問題