具有django-mptt的文件夹类组结构

时间:2015-02-17 20:00:14

标签: django django-models directory django-mptt

我想在我的应用程序中实现以下用户组结构:

 Group_1
   Group_1_1
   Group_1_2
 Group_2
   Group_2_1
     Group_2_1_1

我确实设法用django-mptt做到了,但我现在面临以下问题:

在用户界面中我希望有这样的东西:

Memberships:
--------------------
[ ] Group_1
   [ ] Group_1_1
   [ ] Group_1_2
[ ] Group_2
   [ ] Group_2_1
      [ ]Group_2_1_1 

如果用户想要加入Group_1_1和Group_2_1,则会自动检查加入Group_1和Group_2的复选框,如下所示:

Memberships:
--------------------
[x] Group_1
   [x] Group_1_1
   [ ] Group_1_2
[x] Group_2
   [x] Group_2_1
      [ ]Group_2_1_1 

感觉用这个伪代码来完成它并不难:

If checked_group has parent:
  check parent_group

这有一个JQuery solution,但我认为它应该可以在不使用它的情况下完成,但如果它真的不是 - 那么实现这个的最好方法是什么?将应用程序链接到django项目?

1 个答案:

答案 0 :(得分:1)

在用户界面中,您可以使用JQuery轻松实现。例如:

<div>
  <input class="parent" type="checkbox"  /> Group_1
  <ul>
    <li><input class="child" type="checkbox" />Group_1_1</li>
    <li><input class="child" type="checkbox" />Group_1_2</li>
  </ul>
</div>
<div>
  <input class="parent" type="checkbox"  /> Group_2
  <ul>
    <li><input class="child" type="checkbox" />Group_2_1</li>
    <li><input class="child" type="checkbox" />Group_2_1</li>
  </ul>
</div>
<script>
   $( document ).ready(function() {
      $('.child').click(function(){
        $(this).closest('div').find('.parent').attr('checked', true)
      });
   });
</script>

在您的视图中,您可以使用相同的伪代码逻辑:

if child_group_obj.parent:
    child_group_obj.parent.checked = True