我有两个在admin中注册的Django模型。让我们考虑以下示例:
#parent
class Manufacturer(models.Model):
name = models.TextField()
#some relevant fields
...
#child
class Car(models.Model):
manufacturers = models.ForeignKey(Manufacturer,
on_delete=models.CASCADE, related_name="manufacturers)
# some relevant fields
这两种型号均已向管理员注册。因此,在管理员视图中将显示制造商列表。现在,我希望如果有人单击制造商名称,它应该重定向到列出该制造商为父级的所有汽车的汽车列表。 有可能实现这一目标吗?如果是这样,那怎么办?
答案 0 :(得分:1)
像这样吗?
#HTML admin
{% for man in manufacturer %}
<a href="{% url 'carview' %}?man_id={{manufacturer.pk}}">{{manufacturer.name}}</a>
{% endfor %}
#views.py
def carview(request):
if request.method == 'GET':
cars = Car.objects.filter(manufacturer=request.GET.get(man_id))
context = {'cars':cars}
return render(request, 'cars', context)
#HTML cars
{% for car in cars %}
{{car.name}}
{% endfor %}
当然,您必须为管理员视图创建上下文。在您的汽车课上,您忘记了命名制造商字段。
答案 1 :(得分:0)
是的,您可以在Django Admin中使用内联来实现。
from django.contrib import admin
class CarInline(admin.TabularInline):
model = Car
class ManufacturerAdmin(admin.ModelAdmin):
inlines = [
CarInline,
]