Field.choices整数パラメーターを view.py の関数に渡そうとしています。しかし、私はこれを機能させることができないようです。
具体的には、私の場合、Field.choices 整数パラメーターを使用して、ユーザーが特定のオブジェクトをどの状態に切り替えたいかを決定します。現在、状態変化のすべてのタイプのビュー関数があり、それらはすべて同一です。したがって、これの目標は、より DRY なコードに向かう傾向があることです。
例の状況
以下は HTML コードです (診断および diagnostic_filter オブジェクトにアクセスできます)。
<a href="{%
url reports.views.mark
diagnostic.id,
diagnostic_filter.FALSE %}"
class="btn">
False Positive
</a>
最初に、ユーザーはこのタイプのボタン/リンクをクリックします。
整数の diagnostic_filter.FALSE (diagnostic_filter の 3 つの可能な状態の 1 つ) を一般化された「マーク」関数に渡したいと思います。
def mark(request, diagnostic_id, state):
#Code to change state...
この「マーク」関数は、示されているように、診断フィルター オブジェクト (診断オブジェクトに関連する) の状態を FALSE に変更する必要があります。
urlconf.py の対応する行での私の試みは次のとおりです。
url(r'^diagnostic/(?P<diagnostic_id>\d+)/(?P<state>\d+)/$', 'mark'),
models.py の diagnostic_filter クラスのモデルは次のとおりです。
class DiagnosticFilter(models.Model):
FALSE = 1
LOW = 2
HIGH = 3
STATES = (
(FALSE, 'False Positive'),
(LOW, 'Low Priority'),
(HIGH, 'High Priority'),
)
state = models.IntegerField(choices=STATES)
以下を使用して、テンプレートに diagnostic と diagnostic_filter を渡しています。
return render_to_response(
'reports/diagnostic.html',
{diagnostic,
diagnostic_filter},
context_instance=RequestContext(request)
)
これはこれを回避する最善の方法ですか?私は何か間違ったことをしていますか?ボタンを使用してページをロードすると、Reverse for '[FILE URL HERE].mark' with arguments '(108383, Undefined)' and keyword arguments '{}' not found. の行でエラーが発生するようです。