我正在尝试将Field.choices整数参数传递给view.py中的函数。但是,我似乎无法做到这一点。
具体来说,就我而言,我想使用Field.choices整数参数来决定用户希望切换到的特定对象的状态。目前,我有一个视图函数用于每种类型的状态更改,它们都是相同的。因此,这样做的目标是倾向于更干的代码。
示例情况
以下是一些HTML代码(可以访问diagnostic和diagnostic_filter对象):
<a href="{%
url reports.views.mark
diagnostic.id,
diagnostic_filter.FALSE %}"
class="btn">
False Positive
</a>
最初,用户点击此类按钮/链接。
我想将整数diagnostic_filter.FALSE(这是diagnostic_filter的三种可能状态之一)传递给广义的“mark”函数:
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)
)
这是解决这个问题的最好方法吗?我做错了吗?似乎当我用按钮加载页面时,我在反向'[FILE URL HERE] .mark'的行中出现错误,带有参数'(108383,Undefined)'和关键字参数'{}'not找到。
答案 0 :(得分:0)
可能是您不实际上有权访问diagnostic_filter
对象,或者它不是DiagnosticFilter
类。您收到的错误表明该模板将值diagnostic_filter.FALSE
视为未定义&#39;,这很奇怪,因为您不会在模型中显示该值,而Django& #39;通常的行为是将未知属性显示为None
。你能说明你如何将diagnostic_filter
传递到模板吗?