# models.py from django.db import models from django.contrib.flatpages.models import FlatPage class FlatpageNav(models.Model): ''' A simple snippet of HTML that can be associated with multiple FlatPages. ''' flatpages = models.ManyToManyField(FlatPage, \ help_text='Select the Flatpages that should display this menu') name = models.CharField(max_length=255, \ help_text='A name for this menu. This is not displayed on the FlatPage.') menu = models.TextField(help_text='Enter an HTML snippet for the menu.') def __unicode__(self): return u"%s"%self.name # admin.py from models import FlatpageNav from django.contrib import admin class FlatpageNavAdmin(admin.ModelAdmin): list_display = ('name', ) admin.site.register(FlatpageNav, FlatpageNavAdmin) # Then, in your Flatpage default template, add the following: {% if flatpage.flatpagenav_set.count %} {% for nav in flatpage.flatpagenav_set.all %} {{ nav.menu|safe }} {% endfor %} {% else %} {# Include an alternative menu. #} {% include "flatpages/menu.html" %} {% endif %}