如何通过在html中的复选框选择传递表格行n将数据传递到views.py django

如何通过在html中的复选框选择传递表格行n将数据传递到views.py django

问题描述:

新的python-django需要帮助... 我想通过复选框将选定的表格行从模板传递到views.py使用后method..and被查可以选择多行... ň提交与POST方法行的views.py所选行应该从模板消失后如何通过在html中的复选框选择传递表格行n将数据传递到views.py django

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> 

如何做到这一点? ?哪里错了? 谢谢... :)

你可能会错误的通过使用非Django的方式来处理数据提交。

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

我知道这是一个痛苦,但它真的值得需要一些时间来运行Django书籍,并做一些示例exercies,以便熟悉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()) 

然后在你的模板形式,只需重命名列表1至logs_to_hide并确保字段的值是主日志记录的关键。这里假设你阅读了Django的实际工作方式,并知道如何处理表单验证和表单保存。

请注意,我给你的代码是不完整的,如果没有相当多的额外工作,你将无法工作。 这是

+0

好吧我会阅读文档..但是有没有其他方式通过

数据与形式?我读了一个答案k它默认http对象发送的列表复选框n在views.py我可以得到它使用list = request.POST.getlist('checkbox_name') – manali 2012-03-14 16:17:14
+2

对不起,这个问题基本上是无法回答的,因为你对这一切如何工作还没有足够的了解。我真的认为阅读文档并学习表单如何工作是必要的。从根本上说,你所做的不工作的原因是因为你需要将实际值发送到你的视图函数,而你并没有这样做。如果您按照我的指示阅读文档,它将起作用。您设置的模板将不会按原样运行。 – 2012-03-14 17:19:31

+0

谢谢... m阅读文档..但没有得到在哪个方向我应该工作..我应该去为Django的形式k javascript ..因为我需要得到选定的复选框表格行..所以我怎么能绑定与表格行复选框?以及如何获得实际数据.. ??困惑... – manali 2012-03-15 10:39:46