Django y modelos con múltiples claves externas

Soy nuevo en Django y hasta ahora me han impresionado sus capacidades. Estoy jugando con modelos más complejos y tengo problemas para usarlos correctamente. Con Django 1.3, estoy tratando de escribir una página de resumen que presente los tres modelos siguientes con la siguiente estructura. En otras palabras, una lista de viajes con sus destinos y actividades.

Trip 1Destination 1Destination 2Actividad Trip 2Destination 1Actividad 2

Modelos

Trip <-> TripDestination <-> Destino (un viaje puede tener múltiples destinos)Actividad -> Viaje, Actividad -> Destino (una actividad se define para un viaje en un lugar / destino específico)
    class Destination(models.Model):
        city_name=models.CharField()

    class Trip(models.Model):
        departing_on=models.DateField()
        returning_on=models.DateField()
        destinations=models.ManyToManyField(Destination)

    class Activity(models.Model):
        destination=models.ForeignKey(Destination, null=False)
        trip=models.ForeignKey(Trip, null=False)

Estoy tratando de escribir una vista que genere una página con la estructura presentada anteriormente. El principal problema que tengo ahora es mostrar las actividades de un viaje y destino específicos. Como puede ver en el siguiente código, estoy construyendo un diccionario y dudo que sea lo correcto. Además, la vista se convierte en

Ve

def list_trip(request, template_name = 'trip-list.html'):
    trips = Trip.objects.all()

    # Build a dictionary for activities -- Is this the right thing to do?
    activities = Activity.objects.filter(trip__in=trips)
    activities_by_trips = dict()
    for activity in activities:
        if activity.trip_id not in activities_by_trips:
            activities_by_trips[activity.trip_id] = dict()

        if activity.destination_id not in activities_by_trips[activity.trip_id]:
            activities_by_trips[activity.trip_id][activity.destination_id] = []

        activities_by_trips[activity.trip_id][activity.destination_id].append(activity)

    return render_to_response(template_name, {
        'page_title': 'List of trips',
        'trips': trips,
        'activities_by_trips': activities_by_trips,
    })

Model


{% block content %}
    {% for trip in trips %}
        {{ trip.id }} - {{ trip.name }}

        {% for destination in trip.destinations.all %}
            {{ destination.city_name }}

            ** This is terrible code -- How to fix that **
            {% for key, value in activities_by_trips|dict_lookup:trip.id %}
                {% if value %}
                    {% for key_prime, value_prime in value|dict_lookup:destination.id %}
                       {{ value_prime.description }}
                    {% endfor %}
                {% endif %}
            {% endfor %}
        {% endfor %}
    {% endfor %}
{% endblock %}

n resumen, ¿alguien puede ayudarme a obtener un resumen de todos los viajes y actividades? ¿Cuál es la mejor manera de lograr eso? ¿Es correcto el modelo?

¡Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta