Создал вот такую модель для многоуровневого меню.

class DjangoMenu(models.Model):
   id = models.IntegerField(primary_key=True, unique=True, blank=True)
   mainitem = models.ForeignKey('self', db_column='mainitem', to_field='id', on_delete=models.DO_NOTHING, blank=True,default=None, null=True)
   nameen = models.CharField(max_length=20, blank=True)
   nameutf8 = models.CharField(max_length=20, blank=True)
   menu_url = models.CharField(max_length=100, blank=True) for_user = models.BooleanField(null=False, blank=True, default=True)
   for_admin = models.BooleanField(null=False, blank=True, default=False)

Связь пунктов меню получается в таблице (сама на себя)

Вот так проверяю авторизован пользователь или нет, админ или не админ.

args = {}
query = Q()
if request.user.is_authenticated() and not request.user.is_superuser:
   query = Q(for_admin=0)

if not request.user.is_authenticated():
   query = Q(for_user=0) &Q(for_admin=0)

MenuRecs = DjangoMenu.objects.filter(mainitem=None).filter(query).all()

args['usmenu'] = MenuRecs.select_related('mainitem')

В шаблоне в цикле перебираю пункты и связи к ним.

Код без тегов, для читабельности.

{% for rec_c in usmenu %}
   <A href="{{ rec_c.menu_url }}">{{ rec_c.nameutf8 }}</a>
   {% for submenu in rec_c.djangomenu_set.all %}
        <a href="{{ submenu.menu_url }}">{{ submenu.nameutf8 }}</a>
   {% endfor %}
{% endfor %}

Главные пункты все нормально фильтруются, а вот как при передачи в шаблон отфильтровать related выборку, не могу понять. Или как отфильтровать ее в шаблоне.  

Помогите добрым советом.