1

モデル フィールドの選択に基づいてクエリセットをフィルター処理できますか?

モデル:

COLORS = (
    ('BLACK', 'black'),
    ('RED', 'red'),
    ('BLUE', 'blue'),
    //etc..
)

class Thing(Models.model):
    color = models.CharField(max_length=5, choices=COLORS)

見る:

def filter_by_color(request):
    q = Thing.objects.filter(???) 

Thingさまざまな色の選択に基づいてフィルタリングする方法はありますか? また、これを動的に記述して、すべての色の選択が単一のビューに対応できるようにする方法はありますか?

4

2 に答える 2

3

Qオブジェクトを調べる必要があります。これは、ユーザーがフィルター処理するために選択した色に応じて、複雑な OR クエリを作成するのに役立ちます。

更新例を追加します。

複数の色でフィルタリングする場合:

from django.db.models import Q

def filter_by_color(request):

    q = Thing.objects.filter(Q(color="BLACK") | Q(color="RED))

UPDATE 2ユーザーがチェックボックスなどで色を選択した場合、次のアプローチを使用できます。

def filter_by_color(request):
    selected_colors = request.GET.getlist('colors')

    q = Thing.objects.filter(color__in=selected_colors)
于 2012-10-30T09:58:10.827 に答える
1

これが欲しいですか?

見る

def filter_by_color(request, color):
     q = Thing.objects.filter(color=color)

したがって、アクセス http://yoursite/thisview/blackするとThings が黒色で取得され、アクセスするとs が赤色でhttp://yoursite/thisview/red取得されます。Thing

于 2012-10-30T06:47:32.273 に答える