アプリのフィルター機能に取り組んでいます。コンマ区切りの文字列を jquery 経由で Django に送信します (jquery 内でスペースを + に置き換えて、ネットワーク経由で送信できるようにします)。
/?ajax&sales_item=t2,+t1
ビューで GET パラメータを取得すると、Django がすでに + をスペースに置き換えていることがわかります。これはすばらしいことです。次に、キーワードをコンマで分割し、空白を取り除きます。
sales_item_raw = request.GET['sales_item']
sales_item_keywords = sales_item_raw.split(',')
最初に、指定された名前が販売アイテムとして存在するかどうかを確認する必要があります。を使用する必要があるicontains
ため、sales_items
複数のアイテムを使用できます。
for item in sales_item_keywords:
sales_items = profile.company.salesitem_set.filter(item_description__icontains=item.strip())
最後になりましたが、クエリセットは、指定された sales_items の取引をフィルタリングするために使用されます。
deals_queryset = deals_queryset.filter(sales_item__in=sales_items)
ユーザーが 1 つのキーワードのみをフィルタリングする場合は正常に機能しますが、キーワードが 2 つある場合は、sales_items
ループの反復ごとに明らかに上書きされます。
これを解決する最もパフォーマンスの高い方法は何ですか? sales_items
各繰り返しの内容をループ外のリストに追加しますか? そして最終的に新しいリストを最終的に送信しdeals_queryset.filter
ますか?
これがこれを解決する良い方法かどうかはわかりません...