【问题标题】:Django admin: How to redirect to child's model's view from parent?Django admin:如何从父级重定向到子级模型的视图?
【发布时间】:2019-07-03 11:51:32
【问题描述】:

我有两个向管理员注册的 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

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

【问题讨论】:

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


    【解决方案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 %}
    

    当然,您必须为您的管理视图创建上下文。在您的 Car 类中,您忘记命名制造商字段。

    【讨论】:

      【解决方案2】:

      是的,您可以在 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2020-03-21
        • 2021-08-14
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        相关资源
        最近更新 更多