这是我的模型:
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个电话号码。如何让过滤器查找所有3个电话号码列并返回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))