ForeignKey and ManyToManyField in a list of all obejcts

Despite my consultation of the documentation I can't find my solution. I want to show in my templates the values linked by ManyToManyField and ForeignKey.
I have this model:

class Adresse(models.Model):
    libelle = models.fields.CharField(max_length=100)
    numero = models.fields.IntegerField(null=True)
    street = models.fields.CharField(max_length=100)
    code = models.fields.IntegerField(null=True)
    city = models.fields.CharField(max_length=100, null=True)
    country = models.ForeignKey(Country, null=True, blank=True, on_delete=models.SET_NULL)
    def __str__(self):
        return f'{self.libelle}'

class Trip(models.Model):
    title = models.fields.CharField(max_length=100)
    traveller = models.ManyToManyField(Character)
    date_start = models.DateField(default=date.today)
    date_end = models.DateField(default=date.today)
    def __str__(self):
        return f'{self.title}'

class Activity(models.Model):
    trip = models.ForeignKey(Trip, null=True, blank=True, on_delete=models.SET_NULL)
    adresse = models.ForeignKey(Adresse, null=True, blank=True, on_delete=models.SET_NULL)
    date_start = models.DateField(default=date.today)
    date_end = models.DateField(default=date.today)
    class Meta:
        verbose_name_plural = "Activities"

and this view to display the total list of trips:

from django.shortcuts import render

# Create your views here.

from django.contrib.auth.decorators import login_required

from django.shortcuts import get_object_or_404, redirect, render

from travel.models import Trip, Adresse, Activity

from profiles.models import Character

@login_required
def travel_list(request):
    travels = Trip.objects.all()
    travellers = Character.objects.all()
    template = 'travel/travel_list.html'
    context = {
        'travels' : travels,
        'travellers' : travellers,      
        }
    return render(request, template, context)

@login_required
def travel_detail(request, travel_id):
    travel = get_object_or_404(Trip, id=travel_id)
    activities = Activity.objects.filter(trip_id=travel_id)
    travellers = travel.traveller.all().order_by("last_name", "first_name")
    template = 'travel/travel_detail.html'
    context = {
        'travel': travel,
        'activities' : activities,
        'travellers' : travellers,
        }
    return render(request, template, context)

et ce template :

{% extends 'base.html' %}

{% load static %}

{% block content %}

<h2>Voyages</h2>

<table>

{% for travel in travels %}

<tr>

<td><a href="{% url 'travel-detail' travel.id %}">{{travel.title}}</a></td>

<td>{{travel.date_start}}</td>

<td>{{travel.date_end}}</td>

<td>
{% for traveller in travellers %}
{{traveller.last_name}}

{% endfor %}

</td>

</tr>

{% endfor %}

</table>

{% endblock %}

I would like to display a table with this information:

| trip.title | trip.date_start | trip.date_end | traveller1.last_name, traveller2.last_name | activity1.adresse.city, activity2.adresse.city

What is the good code?

Back to Top