首页 > 解决方案 > 如何使用list_filter在django admin中过滤多个相同字段的值?

问题描述

我有字段“car”,其中包含值“Benz,Nissan,Kia”使用==> list_filter [“car”]我如何过滤两个值,如“Nissan”和“Kia”。两个都不是

汽车对象

标签: pythondjangodjango-admin

解决方案


您可以使用MultipleChoiceListFilterdjango -admin-multiple-choice-list-filter包,因为 Django 中没有内置多选过滤器。例子:

模型.py

class CarModel(models.Model):
    name = models.CharField(max_length=255)

class Car(models.Model):
    car_model = models.ForeignKey(CarModel, on_delete=models.CASCADE)

管理员.py

from django.contrib import admin
from django_admin_multiple_choice_list_filter.list_filters import MultipleChoiceListFilter
from .models import Car

class CarModelListFilter(MultipleChoiceListFilter):
    title = 'Car Model'
    parameter_name = 'car_model__in'

    def lookups(self, request, model_admin):
        return CarModel.objects.values_list('pk', 'name')

class CarAdmin(admin.ModelAdmin):
    list_display = ('car_model',)
    list_filter = (CarModelListFilter,)

admin.site.register(Car, CarAdmin)

推荐阅读