2013-02-17 55 views
0

我试图将一个整数参数Field.choices传递给view.py中的函数。但是,我似乎无法完成这项工作。未能将Field.choices整数参数传递给view.py中的函数(Django)

具体来说,就我而言,我想使用Field.choices整数参数来决定用户希望某个特定对象切换到哪个状态。目前,我对每种类型的状态变化都有查看功能,而且它们都是相同的。所以,这个目标是倾向于更干的代码。

示例情况

下面是一些HTML代码(其具有访问诊断和diagnostic_filter对象):

  <a href="{% 
       url reports.views.mark 
       diagnostic.id, 
       diagnostic_filter.FALSE %}" 
       class="btn"> 
       False Positive 
      </a> 

最初,这种类型的按钮/链接的用户点击。

我想通过整数diagnostic_filter.FALSE(这是diagnostic_filter的三种可能状态之一),以一个广义的“标记”功能:

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_filter我的模板使用:

return render_to_response(
    'reports/diagnostic.html', 
    {diagnostic, 
    diagnostic_filter}, 
    context_instance=RequestContext(request) 
) 

这是最好的解决方法?我做错了什么?看起来,当我用按钮加载页面时,我在行中找到了一个错误,该行没有找到'[FILE URL HERE] .mark'参数'(108383,Undefined)'和关键字参数'{}'。

回答

0

的可能性是,你实际上有访问diagnostic_filter对象,或者它是不是类DiagnosticFilter。您收到的错误显示模板的值为diagnostic_filter.FALSE为'未定义',这很奇怪,因为您没有在模型中显示该值,并且Django通常的行为是将未知属性显示为None。你能告诉你如何将diagnostic_filter传递给模板吗?

+0

我的模板绝对有权访问diagnostic_filter。我已经在我的模板中成功使用了很长一段时间,昨天在发布问题之前,双重检查了diagnostic_filter.FALSE的值为1.我通过插入

{{diagnostic_filter.FALSE}}

来实现此目的。请回顾一下我的问题,看看我是如何传递diagnostic_filter的。干杯。 – Akyidrian 2013-02-18 19:00:04

+0

忽略我最近的评论。偶尔发现diagnostic_filter未定义。这是有意完成的(换句话说,这是一个只在实现代码中发现的设计决策)。谢谢你的时间。 – Akyidrian 2013-02-19 03:53:58