簡體   English   中英

Django Admin自定義列表過濾器不同的模型

[英]Django Admin custom list filter different model

我正在使用 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'

這工作正常,因為字段“parent_brand”存在於我的模型“ParentProduct”上。 如何為實際上位於“ParentProductCategory”模型中的字段類別獲取相同的自動完成類型列表過濾器。

注意:'ParentProductCategory' -> 'ParentProduct' 是一個多對一的映射。

注意#2: Django 管理員添加自定義過濾器 我嘗試過這個問題,但無法通過該方法,而且我的要求也不同。 我需要一個自動完成類型過濾器。

注意 #3:如果自動完成是不可能的,有沒有辦法讓下拉列表中只包含現有的“類別”值?

在你的 ParentProductAdmin 類中試試這個

list_filter = ['parent_product__parent_brand', 'status']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM