django 在方法中怎么删除list_filter中的字段?
时间: 2024-03-10 10:44:23 浏览: 140
可以通过`ModelAdmin`子类的`get_list_filter`方法来动态设置`list_filter`,在该方法中可以根据需要返回一个不包含指定字段的新的`list_filter`列表,达到删除字段的目的。
例如,假设有一个`ModelAdmin`子类如下:
```python
class MyModelAdmin(admin.ModelAdmin):
list_filter = ['field1', 'field2', 'field3']
def get_list_filter(self, request):
# 删除list_filter中的field2字段
return [f for f in self.list_filter if f != 'field2']
```
在上述代码中,重写了`get_list_filter`方法,返回一个不包含`field2`的新的`list_filter`列表,从而达到删除`field2`字段的目的。
相关问题
wagtail怎么将过滤器list_filter中的字段在侧面改为可以选择年或者月的过滤器?
要将过滤器list_filter中的字段在侧面改为可以选择年或者月的过滤器,可以使用django admin中的DateFieldListFilter或者RelatedOnlyFieldListFilter,具体步骤如下:
1. 在models.py中,将要过滤的字段定义为DateField类型,例如:
```python
from django.db import models
class MyModel(models.Model):
date_field = models.DateField()
```
2. 在admin.py中,定义ModelAdmin并设置list_filter为DateFieldListFilter或者RelatedOnlyFieldListFilter,例如:
```python
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from django.contrib.admin import DateFieldListFilter
from .models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_filter = (
('date_field', DateFieldListFilter),
)
admin.site.register(MyModel, MyModelAdmin)
```
这样,就可以在侧面的过滤器中选择年份或者月份进行过滤了。注意,使用DateFieldListFilter需要在admin.py中导入DateFieldListFilter,使用RelatedOnlyFieldListFilter需要在admin.py中导入RelatedOnlyFieldListFilter。
class warehousePeopleBase(ModelAdmin): model = warehousePeople menu_label = '库房人员出入库信息' # ditch this to use verbose_name_plural from model menu_icon = 'site' # change as required list_display = ['name', 'yearMonth', 'month', 'warehouse', 'subjectMatter'] list_filter = ('name', 'yearMonth', 'month', 'warehouse',) 怎么将list_filter 中的日期字段改为日期选择器?
你可以使用 Django 内置的日期选择器,将 `list_filter` 中的日期字段改为日期选择器。具体步骤如下:
1. 导入 `DateFieldListFilter`:
```python
from django.contrib.admin.filters import DateFieldListFilter
```
2. 创建一个新的 `ModelAdmin` 类并继承 `warehousePeopleBase`,在该类中重写 `list_filter` 属性:
```python
class warehousePeopleAdmin(warehousePeopleBase):
list_filter = (
('yearMonth', DateFieldListFilter),
('month', DateFieldListFilter),
'warehouse',
)
```
这里使用了 `DateFieldListFilter` 来替换日期字段,同时还保留了 `warehouse` 字段。如果你想要对其他日期字段也进行修改,只需在 `list_filter` 中添加相应的元组即可。
3. 在 `admin.py` 中注册新的 `ModelAdmin` 类:
```python
admin.site.register(warehousePeople, warehousePeopleAdmin)
```
现在,在 `warehousePeople` 模型的管理页面中,你会看到日期筛选器已经被替换成日期选择器了。
阅读全文