隐藏django中的特定记录

时间:2015-04-20 21:56:48

标签: jquery ajax django django-templates

我正在使用for循环访问表中模型的所有记录。我在每一行都添加了一个按钮。当我单击该按钮删除特定行时,但当我刷新页面时,所有删除的行再次出现。但我不想再向他们展示。我怎样才能做到这一点?

<table class="table table-striped">
  <thead>
    <tr>
         <th>Firstname</th>
         <th>Lastname</th>
         <th>Check Out</th>
    </tr>
  </thead>
  <tbody>
          {%for s in student %}
          <tr class="hiderow">
             <td>{{ s.first_name }}</td>
             <td>{{ s.last_name }}</td>
             <td id="hidebtn"><div class="btn" role="group" aria-label="...">
               <button type="button" class="btn btn-primary btn-sm" onclick="$(this).closest('tr').remove()">Check out Now</button>
             </div></td>
          {% endfor %}
  </tbody>
</table>

2 个答案:

答案 0 :(得分:0)

您必须向服务器发出AJAX请求,并实际将此条目从数据库中删除为永久性。

答案 1 :(得分:0)

为了找到适合您案例的解决方案,您必须了解为什么删除无法通过您的方法重新加载页面。您的onclick JavaScript剪辑会修改DOM。服务器不知道发生了这种情况,浏览器会在刷新时抛出当前的DOM,并将从最新从服务器获取的HTML构建一个新的DOM。

用户的所有浏览器会话,甚至所有用户的按钮是否仍然隐藏?然后你需要一些服务器端状态。 (请参阅Domen's answer。)可能是另一个模型,它将按键所依据的模型的外键保存在其中。

按钮是否仅对当前会话保持隐藏状态,即对于已删除该按钮的浏览器标签?然后,您可以在不点击服务器的情况下通过,例如通过将状态保存在修改后的URL中。 (用#....后缀对状态进行编码,并在页面刷新时从那里取回。)当然,对于这种情况,您仍然可以自由地在服务器端保持状态。您可能希望将其与某种会话表示相关联。 (不确定Django在这方面有什么。)