簡體   English   中英

在Django中,正確地創建具有多個類別,多個標簽和搜索的查詢集?

[英]In Django, correctly making a queryset with multiple categories, multiple tags and search?

我有一個數據列表。 該數據模型具有類別模型和關鍵字模型的多對多字段。 數據模型本身具有名稱和描述。 數據可以具有多個類別和關鍵字。

在前端,用戶可以選擇多個類別來篩選數據或進行搜索...因此,顯示的數據應該是選擇了任何類別的任何數據。 如果“測試數據1”具有類別“ A”,而“測試數據2”具有類別“ B”,則如果用戶選擇查看類別“ A”和“ B”,則將同時顯示這兩個數據。 該搜索旨在在標題,描述和與數據關聯的關鍵字中搜索數據,如果選擇了任何類別,它將在查詢類別后剩下的數據中進行搜索。

我不是Django的專家...我正在嘗試找出最佳方法。 我不想求助於使用Haystack之類的工具,因為我的數據確實很簡單。 我發現對對象執行.filter()基本上是在底層SQL中給我一個AND,這對於類別的工作方式並不理想。 看來我需要某種OR ...也許?

前端的類別選擇是通過表單完成的,因此返回的數據基本上是所選類別的列表['A','B','C'] ...我無法刪除到Django中的queryset中,並返回具有一個或任何這些類別的所有數據?

非常感謝!

不知道你的意思在這里。 您可以嘗試以下方法:

from django.db.models import Q

query = 'fun'
books = Fun.objects.filter(Q(categories__id__in=[1,2,3]),
                     Q(name__icontains=query) | \
                     Q(description__icontains=query) | \
                     Q(keywords__title__icontains=query))

http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM