0

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. の行でエラーが発生するようです。

4

1 に答える 1

0

オブジェクトに実際にアクセスできないか、クラスではない可能性があります。取得しているエラーは、テンプレートが値を「未定義」と見なしていることを示しています。これは、モデルでその値を表示しないため奇妙です。Django の通常の動作は、不明な属性を として表示することです。テンプレートにどのように渡されているかを示すことができますか?diagnostic_filterDiagnosticFilterdiagnostic_filter.FALSENonediagnostic_filter

于 2013-02-18T07:35:57.520 に答える