manager: very rough hierarchy navigation
This commit is contained in:
parent
ee27b040c6
commit
f11420e24f
|
@ -47,6 +47,9 @@ class Page(models.Model):
|
|||
parts.append(page.slug)
|
||||
return '/' + '/'.join(reversed(parts))
|
||||
|
||||
def has_children(self):
|
||||
return Page.objects.filter(parent_id=self.id).exists()
|
||||
|
||||
|
||||
class CellBase(models.Model):
|
||||
page = models.ForeignKey(Page)
|
||||
|
|
|
@ -3,8 +3,13 @@
|
|||
{% block content %}
|
||||
|
||||
<ul>
|
||||
{% if parent %}
|
||||
<li><a href="{% if parent.parent_id %}?parent={{ parent.parent_id }}{% else %}.{% endif %}">..</a></li>
|
||||
{% endif %}
|
||||
{% for page in object_list %}
|
||||
<li><a href="{% url 'combo-manager-page-view' pk=page.id %}">{{ page.title }}</a></li>
|
||||
<li><a href="{% url 'combo-manager-page-view' pk=page.id %}">{{ page.title }}</a>
|
||||
{% if page.has_children %}<a href="?parent={{ page.id }}">+</a>{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -38,6 +38,21 @@ class PagesListView(ListView):
|
|||
model = Page
|
||||
template_name = 'combo/pages_list.html'
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super(PagesListView, self).get_queryset()
|
||||
try:
|
||||
parent_id = self.request.GET['parent']
|
||||
except KeyError:
|
||||
return queryset.filter(parent_id__isnull=True)
|
||||
return queryset.filter(parent_id=parent_id)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(PagesListView, self).get_context_data(**kwargs)
|
||||
if self.request.GET.get('parent'):
|
||||
context['parent'] = Page.objects.get(id=self.request.GET['parent'])
|
||||
return context
|
||||
|
||||
|
||||
pages_list = PagesListView.as_view()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue