如何使用html中的复选框传递选中的表行n将数据传递给views.py django

时间:2012-03-14 12:17:15

标签: javascript python django

新手python-django需要帮助...... 我想将选定的表格行从模板传递到views.py,并使用post方法检查复选框..并且可以选择多行... n使用POST方法向views.py提交行后,所选行应从模板中消失

template:a.html 
<tr > {% if getlog %}
<form action="{% url list %}" method="post">{% csrf_token %}
<td><input type="checkbox" id="check_all" checked="checked"/></td>          
<thead><th COLSPAN="2">App Name</th>
    <th COLSPAN="2">File Name</th>
    <th COLSPAN="2">Function Name</th>
    <th COLSPAN="2">Path Name</th>
    <th COLSPAN="2">Line No</th>
    <th COLSPAN="2">Level Name</th>
    <th COLSPAN="2">Message</th>
    <th COLSPAN="2">Thread Name</th>
</tr>                                                                
</thead>
{% for log in loglist %}
<tr id="tr1">
<td><input type="checkbox" class="check_field" checked="checked" name="list1"/> </td>
   <td colspan="2" > {{ log.app.appname }} </td>
   <td colspan="2"> {{ log.filename }}</td>
   <td colspan="2" >{{ log.funcname }}</td>
   <td colspan="2" >{{ log.pathname }}</td>
   <td colspan="2" >{{ log.lineno }}</td>
   <td colspan="2" >{{ log.typeid.levelname }}</td>
   <td colspan="2" >{{ log.typeid.message }}</td>
   <td colspan="2">{{ log.threadName }}</td>
</tr>
{% endfor %}      
</tbody>
</table>

        该怎么办???哪里出错了? 感谢...:)

1 个答案:

答案 0 :(得分:0)

使用非Django处理数据提交方式可能会出错。

Django的强大功能在于一个非常强大的表单系统,它可以为您生成表单以及处理常见任务,例如将记录保存到数据库,表单验证等。

我知道这很痛苦,但真的值得花一些时间来浏览Django书并做一些示例练习,这样你就可以熟悉Django的基础知识了。有了这些,您可以考虑采取哪些步骤来推进您真正想要做的事情。

你的是一个特例,所以一个简单的formset或ModelForm不会真正做到这一点,这是我推荐的一个必要条件。

<强> models.py

class Log(models.Model):
    # whatever fields you want
    date_hidden = models.DateTimeField(null=True, blank=True)

<强> forms.py

class LogDisplayForm(forms.Form):
    logs_to_hide = forms.ModelChoiceField(required=False, queryset=Log.objects.exclude(date_hidden__isnull=False)

    def save(self, *args, **kwargs):
        if self.cleaned_data.get('logs_to_hide'):
            Log.object.filter(pk__in=self.cleaned_data['logs_to_hide']).update(date_hidden=datetime.datetime.now())

然后在模板表单中,只需将list1重命名为logs_to_hide,并确保该字段的值是日志记录的主键。这假设您已经了解了Django的实际工作方式,并了解如何在视图中处理表单验证和表单保存。

请注意,我提供给您的代码不完整,如果您没有相当多的额外工作,则无法运行。