I have a ListView that lists all Vehicle objects. How can I make another view, that would show a list of all Job objects associated with that vehicle when I click on the link marked ### next to that vehicle?
models.py
class Vehicle(models.Model):
vehicle_reg = models.CharField(primary_key=True, max_length=7)
vehicle_make = models.CharField(max_length=15)
vehicle_model = models.CharField(max_length=15)
class Job(models.Model):
car = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
html
<table class="table">
<thead class="thead-dark">
<tr class="table-light">
<th scope="col">Registration</th>
<th scope="col">Make</th>
<th scope="col">Model</th>
</tr>
</thead>
<tbody>
{% for vehicle in vehicleList %}
<tr class="table-light">
<td class="lead">
<a href="{% url '###' pk=vehicle.pk %}">{{vehicle.vehicle_reg}}</a></td>
<td class="lead">{{vehicle.vehicle_make}}</td>
<td class="lead">{{vehicle.vehicle_model}}</td>
</tr>
views.py
class VehicleListView(ListView):
context_object_name = 'vehicleList'
model = Vehicle
template_name = 'vehicles/vehicle_list.html'
Thank you in advance.
You can try this.
# detail view for vehicle
class VehicleDetailView(DetailView):
model = Vehicle
template_name = 'your_template'
context_object_name = 'vehicle'
# urls.py
path('vehicle/<int:pk>/detail/', VehicleDetailView.as_view(), name='vehicle_detail')
# your_list_template
{% for vehicle in vehicleList %}
......
<a href="{% url 'vehicle_detail' vehicle.pk %}">{{vehicle}}</a>
{% endfor %}
# vehicle detail template
{% for job in vehicle.job_set.all %}
...
{{job}}
{% endfor %}