如何解决如何通过 Django 中的外键列出与特定对象关联的所有对象?
我有一个列出所有 Vehicle 对象的 ListView。我如何创建另一个视图,当我单击该车辆旁边标记为 ### 的链接时,该视图将显示与该车辆关联的所有 Job 对象的列表?
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'
提前致谢。
解决方法
你可以试试这个。
# 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 %}
,
您必须创建一个单独的视图并将外键 ID 解析到该视图中(通过 url)。然后在该视图中,由于您使用的是基于类的视图,请使用 Job.objects.filter(car_id=kwargs.get('vehicle_id')) 覆盖 get_queryset
class JobListView(ListView):
context_object_name = 'jobList'
model = Job
template_name = 'vehicles/job_list.html'
def get_queryset(self):
qs = Job.objects.filter(vehicle_id=self.kwargs.get('vehicle_id'))
return qs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。