Django管理员:如何从父级重定向到子级模型的视图?

时间:2019-02-09 11:52:16

标签: django python-3.x django-models django-views django-admin

我有两个在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

这两种型号均已向管理员注册。因此,在管理员视图中将显示制造商列表。现在,我希望如果有人单击制造商名称,它应该重定向到列出该制造商为父级的所有汽车的汽车列表。 有可能实现这一目标吗?如果是这样,那怎么办?

2 个答案:

答案 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,
      ]

See Inline model admin Django official Docs