 <h1>Update related to your comment:</h1> <pre><code>from itertools import count, repeat def statistiken(request): # Get all members members = Member.objects.all() # Get maximum number of related events max_n_events = max(member.event_set.all().count() for member in members) # Create a list to hold table data table_data = [] for member in members: # Get all related events for the member events = member.event_set.all() # Get number of events n = events.count() # Append a iterator with member instance, event instances, and # repeating empty strings to fill up the table table_data.append(chain([member], events, repeat('', max_n_events-n))) context = {'table_data': table_data} return render(request, 'anwesenheitsapp/statistiken.html', context) </code></pre> <p>and your template to this:</p> <pre><code>&lt;table&gt; &lt;tr&gt; {% for row in table_data %} {% for col in row %} &lt;td&gt;{{ col }}&lt;/td&gt; {% endfor %} {% endfor %} &lt;/tr&gt; &lt;/table&gt; </code></pre> <p>The strings in the table will be the result of <code>__unicode__()</code> for your member and events, followed by empty cells.</p> <hr> <h1>(old answer)</h1> <p>To access all related Events from a Member instance, use <code>event_set.all()</code>.</p> <p>Your template could look something like this:</p> <pre><code>&lt;table&gt; {% for member in all_members %} &lt;td&gt;{{ member }}&lt;/td&gt; {% for event in member.event_set.all %} &lt;td&gt;{{ event }}&lt;/td&gt; {% endfor %} {% endfor %} &lt;/table&gt; </code></pre> <p>Which should produce this table</p> <pre><code>| member0 | related_event00 | related_event01 | ... | related_event_0n| | member1 | related_event10 | related_event11 | ... | related_event_1n| | .... | | memberm | related_eventm0 | related_eventm1 | ... | related_event_mn| </code></pre> <p>(n could be different from member to member of course)</p>