python - 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 管理员添加自定义过滤器。我尝试过这个问题,但无法通过这种方法,而且我的要求也不同。我需要一个自动完成类型的过滤器。
注意#3:如果无法自动完成,有没有办法让下拉菜单中只有现有的“类别”值?
解决方案
在你的 ParentProductAdmin 类中试试这个
list_filter = ['parent_product__parent_brand', 'status']
推荐阅读
- azure - Cosmos DB 高 RU
- cordova - 浏览器中 Keycloak 服务器的 Ionic Lab 错误(拒绝构建 Kyecloak 服务器,因为祖先违反了)
- git - VSCode + Github,没有初始化存储库按钮
- ios - 即使在正确设置属性后,iOS tableViewCell 也不会在重新加载 tableview 后更新
- node.js - 将多个氦 API 调用从设备移动到服务器端
- angular - 使用 SAML 为 Angular 实施 Azure AD SSO
- nginx - proxy_pass 连接不安全
- python - 排序边界框或合并它们python
- database - Clickhouse - 100亿数据是否需要单独的数据库和表格
- python - 为什么这两个进程的行为是这样的?