Djangoはピット段:PK

逐語大きな柱  https://www.dazhuanlan.com/2019/08/26/5d634d9cb14d2/

、「最初のDjangoアプリケーション」、私はDjangoのアプリケーション開発プロセスとアプリケーション開発手順の一種の予備的な理解のために私を総括、私は試したブログ記事によると、再現可能なアプリケーションを処理するために登場したカリキュラムに基づいて、以下のように読み込みますエラー:

私は家に入った後、世論調査で投票する一つのタイトルを選択投票にジャンプの後にこのエラーが発生しhttp://127.0.0.1:8000/polls/1/vote/、理にかなってを持っている必要がありhttp://127.0.0.1:8000/polls/1/results/、その後、私は投票/polls/views.py文書に設定された目標を確認します()方法、次のように私は、この方法でジャンプページを設定する理由は次のとおりです。

1 
2
3
4
5
6
7
8
9
10
11
12
13
デフ投票(リクエスト、question_id):
質問= get_object_or_404(質問、PK = question_id)
してみてください:
selected_choice = question.choice_set.get(request.POST [ '選択'])
:(KeyError 例外、Choice.DoesNotExist)を除いて
(要求をリターンがレンダリング'世論調査/ detail.html'、{
'質問':質問、
'ERROR_MESSAGE': "あなたは選択肢を選択しなかった。"、
})
他:
selected_choice.votes + = 1
selected_choice.save()
の戻りHttpResponseRedirect(リバース( '世論調査:結果'、引数=(question.id、)))

分析と解決

結合された情報は、情報「は解凍するのに十分な値(除外与えられている 1を得た、2)」を、 クエリを実行し、単一返します、(代理人ソースによって取得アンパックプロセスにおける値の小さい見つけることを意味する)メソッドオブジェクトマッチングをキーワード引数を与えられた。特定のキーワードのステートメントでは、クエリを実行し、オブジェクトのマッチングを返します。request.POSTを使用すると、キー名によってデータ・アクセスを提出することができ、辞書のようなオブジェクトです。本実施形態では、request.POST [「選択」]はIDは、主キーであり、従ってその代わり、選択されたオプションのIDを返すpk=request.POST['choice']ことができます。

概要

あなたは新しいモデルのインスタンスを作成するときに主キー場合は、その後、Djangoは自動的に所望の結果を達成するために、時にはidとPKで、モデルの主キーとしてidフィールドを作成しますが、実際の主キーのPKは、複数の独立しました、それは主キーidというか、OBJECT_IDさを気にしないでください。Pkが、モデルが異なる主キーを持っている場合でも、一貫性を改善し、使用することができます。

参考資料

おすすめ

転載: www.cnblogs.com/JimmyShen/p/11411771.html