0

我正在尝试将Field.choices整数参数传递给 view.py 中的函数。但是,我似乎无法完成这项工作。

具体来说,就我而言,我想使用 Field.choices 整数参数来决定用户希望特定对象切换到哪个状态。目前,我对每种类型的状态变化都有一个视图函数,它们都是相同的。因此,这样做的目标是倾向于更 DRY 的代码。

示例情况

这是一些 HTML 代码(可以访问诊断和诊断过滤器对象):

            <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)

我正在使用以下方法将诊断和诊断过滤器传递给我的模板:

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

这是解决这个问题的最好方法吗?我做错什么了吗?似乎当我使用按钮加载页面时,我在“[FILE URL HERE].mark”的“[FILE URL HERE].mark”行中出现错误,参数“(108383,未定义)”和关键字参数“{}”未找到。

4

1 回答 1

0

可能是您实际上无权访问该diagnostic_filter对象,或者它不是 class DiagnosticFilter。您收到的错误表明模板将值diagnostic_filter.FALSE视为“未定义”,这很奇怪,因为您没有在模型中显示该值,而 Django 的通常行为是将未知属性显示为None. 你能展示你是如何传递diagnostic_filter给模板的吗?

于 2013-02-18T07:35:57.520 回答