django 过滤器 - 如何从 3 列中搜索 phone 数字
django filter - How to search a phone number form 3 columns
这是我的模型:
HomePhone = models.CharField(max_length=12, null=True)
Phone2 = models.CharField(max_length=12, null=True)
Phone3 = models.CharField(max_length=12, null=True)
这是过滤器:
class optionFilter(django_filters.FilterSet):
class Meta:
model = option2019
fields = {
'LastName': ['icontains',],
'FirstName':['icontains',],
'aidecode':['exact',],
'SSN':['icontains',],
'HomePhone':['exact',],
}
根据模型,每个人都会有 3 个 phone 号码。如何让过滤器查找所有 3 个 phone 数字列和 return 1 个人的所有信息?
谢谢!
您必须声明自定义过滤器并使用 method
argument。在您的情况下,它类似于
import django_filters
from django.db.models import Q
class optionFilter(django_filters.FilterSet):
phone = django_filters.CharFilter(method='phone_filter')
class Meta:
model = option2019
fields = {
'LastName': ['icontains',],
'FirstName':['icontains',],
'aidecode':['exact',],
'SSN':['icontains',],
'phone': ['exact',],
}
def phone_filter(self, queryset, name, value):
return queryset.filter(Q(HomePhone=value) | Q(Phone2=value) | Q(Phone3=value))
这是我的模型:
HomePhone = models.CharField(max_length=12, null=True)
Phone2 = models.CharField(max_length=12, null=True)
Phone3 = models.CharField(max_length=12, null=True)
这是过滤器:
class optionFilter(django_filters.FilterSet):
class Meta:
model = option2019
fields = {
'LastName': ['icontains',],
'FirstName':['icontains',],
'aidecode':['exact',],
'SSN':['icontains',],
'HomePhone':['exact',],
}
根据模型,每个人都会有 3 个 phone 号码。如何让过滤器查找所有 3 个 phone 数字列和 return 1 个人的所有信息?
谢谢!
您必须声明自定义过滤器并使用 method
argument。在您的情况下,它类似于
import django_filters
from django.db.models import Q
class optionFilter(django_filters.FilterSet):
phone = django_filters.CharFilter(method='phone_filter')
class Meta:
model = option2019
fields = {
'LastName': ['icontains',],
'FirstName':['icontains',],
'aidecode':['exact',],
'SSN':['icontains',],
'phone': ['exact',],
}
def phone_filter(self, queryset, name, value):
return queryset.filter(Q(HomePhone=value) | Q(Phone2=value) | Q(Phone3=value))