gpt4 book ai didi

python - Django 管理中的自定义过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:06 26 4
gpt4 key购买 nike

我有一个模型如下

class Person:
name = models.CharField()
city = models.CharField()
phone = models.CharField()

我想在管理页面创建一个过滤器,过滤器应该是基于电话的,即

valid phone(having 10 digits)
invalid phone

我不想创建验证。我只想过滤掉谁拥有有效电话和无效电话。谢谢

最佳答案

创建自定义列表过滤器类。有一个 example in the docs 这可以适用于您的情况。

from django.contrib import admin

class ValidPhoneListFilter(admin.SimpleListFilter):
# Human-readable title which will be displayed in the
# right admin sidebar just above the filter options.
title = _('valid phone')

parameter_name = 'valid_phone'

def lookups(self, request, model_admin):
return (
('valid', _('valid phone')),
('invalid', _('invalid phone')),
)

def queryset(self, request, queryset):
if self.value() == 'valid':
return queryset.filter(phone__regex=r'^\d{10}$')
if self.value() == 'invalid':
return queryset.exclude(phone__regex=r'^\d{10}$')

然后将您的列表过滤器类包含在模型管理员的 list_filter 中。

class PersonAdmin(admin.ModelAdmin):
list_filter = (ValidPhoneListFilter,)

关于python - Django 管理中的自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45564415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com