0

私は次の見解を持っています:

def process(request):
    if request.method == 'POST':
        data = request.POST
        results = Specs.objects.filter(screenGroup = data['screen_user'], storage = data['storage_user'], mSystem = data['system_user'] )
        context = {'results' : results}
        return render(request, 'process.html', context)

ユーザーが 3 つの値を入力すると正しくフィルター処理されますが、1 つまたは 2 つ (または何も入力しない) だけを入力すると、値 None を渡してフィルター処理されます。フィルターが設定されていない場合、フィルターを無視する方法はありますか?

ありがとう!

編集:

次のコードは機能していますが、明らかに非常に非効率的な方法です。

def process(request):
    if request.method == 'POST':
       data = request.POST
       if(data['screen_user'] != None):
           results = Specs.objects.filter(screenGroup = data['screen_user'])
        elif (data['storage_user'] != None):
           results = Specs.objects.filter(storage = data['storage_user'])
        else:
           results = Specs.objects.all()
           #plus all the other options...
        context = {'results' : results}
        return render(request, 'process.html', context)
4

2 に答える 2

2

これは、フォームの検証と呼ばれます。. これには 2 つの方法があります。

  1. Django フォームを作成し、myform.is_valid() を使用します。ドキュメントでそれについて読むことができます

  2. いくつかの「if」ステートメントで自分で検証します(サーバー側またはajax呼び出しを送信する前にjavascriptを使用)

于 2013-08-19T14:42:08.577 に答える