Django Admin自定义列表过滤器过滤不同的模型

问题描述

我使用的是Django 2.1,我需要在模型(#1)管理页面上添加一个列表过滤器,以引用来自不同模型(#2)的字段(其中外键引用当前模型(#1))这是我的2种型号:

class ParentProduct(models.Model):
    parent_id = models.CharField(max_length=255,validators=[ParentIDValidator])
    name = models.CharField(max_length=255,validators=[ProductNameValidator])
    parent_slug = models.SlugField(max_length=255)
    parent_brand = models.ForeignKey(Brand,related_name='parent_brand_product',blank=False,on_delete=models.CASCADE)
    ...
class ParentProductCategory(models.Model):
    parent_product = models.ForeignKey(ParentProduct,related_name='parent_product_pro_category',on_delete=models.CASCADE)
    category = models.ForeignKey(Category,related_name='parent_category_pro_category',on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)

这是我的模型“ ParentProduct”的管理类:

class ParentProductAdmin(admin.ModelAdmin):
    resource_class = ParentProductResource
    form = ParentProductForm

    class Media:
        pass

    change_list_template = 'admin/products/parent_product_change_list.html'
    actions = [deactivate_selected_products,approve_selected_products]
    list_display = [
        'parent_id','name','parent_brand','product_hsn','gst','product_image','status'
    ]
    inlines = [
        ParentProductCategoryAdmin
    ]
    list_filter = [ParentBrandFilter,'status']

这是ParentBrandFilter:

class ParentBrandFilter(AutocompleteFilter):
    title = 'Brand'
    field_name = 'parent_brand'

这是正确的,因为我的模型“ ParentProduct”中存在“ parent_brand”字段。如何为“ ParentProductCategory”模型中的字段类别获取相同的自动填充类型列表过滤器。

注意:“ ParentProductCategory”->“ ParentProduct”是多对一映射。

注释2:Django admin add custom filter。我尝试解决这个问题,但是无法通过方法解决,而且我的要求也有所不同。我需要一个自动填充类型过滤器。

注释#3:如果无法完成自动填充,是否有一种方法可以使下拉列表中仅包含现有的“类别”值?

解决方法

在您的ParentProductAdmin类中尝试

list_filter = ['parent_product__parent_brand','status']

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...