2017-03-10 3 views
0

私はDjangoプロジェクトをやっています。Djangoでは、データベースからユーザの選択を取り出す方法は?

私は2つのウェブページを持っています。最初のプログラムは、ユーザーにいくつかの主要なプログラムを提供し、ユーザーは1つのプログラムのみを選択します。次に、第2のウェブページは、ユーザがウェブページ内でどの番組を選択するかに基づいて選択するいくつかのコースをユーザに提供する。

ここに私のview.pyがあります。この機能は、最初のWebページで使用されます。

def choose_major(request): 
    if request.method == "GET": 
     form = MajorForm(request.GET) 
     if form.is_valid(): 
      major_program = request.GET["major_program"] 
      major_obj = Major.objects.get(major=major_program) 
      major_obj.save() 
    return render(request, "major.html", {"form":form}) 

私の質問は、関数choose_majorの外で変数major_programの値を取得する方法ですか?

ありがとうございました!

+0

ユーザーの選択をどこかに保存し(おそらくデータベースまたはセッションに)、好きな場所にフェッチします。もちろん、ユーザーがフォームに必要事項を記入した後にのみ**を取得するようにする必要があります。 –

+0

ありがとう!しかし、誰かがフォームに記入する前にLinuxでWebページを開くことは可能でしょうか?さもなければ、私はウェブページをチェックするチャンスを持っていないでしょう。 –

+0

まだフォームに記入していない場合、** major_programの値はありません**でしょうか?たぶん私はその質問を理解していないかもしれません。 –

答えて

0

あなたが要求から、この変数を取得するときに、それを保存するには、この操作を行います。

major_program = request.GET["major_program"] 
# You probably want to do this instead 
new_major = Major(major=major_program) 
new_major.save() 

あなたは新しいメジャーオブジェクトを作成し、データベースに保存するこの方法です。あなたはこの関数の外でそれを検索するためにdbを照会します。また

、あなたの代わりに

request.GET["major_program"] 

を使用しての、フォームを検証しているので、あなたはおそらくこのことができます

form.cleaned_data["major_program] 

希望を使用することができます。

+0

ありがとうございます。クエリでは、Major.objects.all()を意味しますか? –

+0

これは、dbに保存されているすべてのメジャーオブジェクトを提供します。私はあなたのメジャーモデルがどのように見えるかは分かりませんが、(ユーザーのような)他のものもそこに保存してから、より具体的なクエリを作成することができます。 – user6731765

+0

この回答は、任意のメジャーオブジェクトを作成しますが、特定のユーザーにリンクしません。 –